我有以下測驗 nginx 配置:
user nginx;
worker_processes auto;
error_log /dev/stderr debug;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /dev/stderr main;
sendfile on;
keepalive_timeout 65;
upstream content {
server 127.0.0.1:4001;
}
server {
listen 4000;
server_name test;
gzip off;
autoindex off;
location /test-auth {
add_header X-Test "testvalue";
return 200;
}
location /proxy {
add_header "X-Test1" "test1";
auth_request /test-auth;
auth_request_set $test $sent_http_x_test;
auth_request_set $test2 $upstream_status;
add_header X-Test $test;
add_header X-Test2 $test2;
proxy_pass http://content?test=$test&test2=$test2;
proxy_pass_request_body off;
}
}
server {
listen 4001;
add_header X-Test3 "test3";
return 200 "testt response $args";
}
}
我希望請求/proxyURL 將回傳所有測驗標頭:(X-Test由身份驗證請求回傳的標頭),X-Test1(只是一個示例),X-Test2(身份驗證請求 HTTP 狀態的值),X-Test3(由content下游設定)。
但實際上,這個請求只回傳X-Test1和X-Test2。我無法通過auth_request_set指令獲得任何值(標頭或回傳狀態)。我試過變數名我在谷歌發現的兩種變型:$sent_http_x_test和$upstream_http_x_test,但沒有運氣。該$test變數總是空的。
我看到了以下官方示例:https : //docs.nginx.com/nginx/admin-guide/security-controls/configuring-subrequest-authentication/但該auth_request_set $test2 $upstream_status;行也不起作用,$test2變數始終為空。
我做錯了什么?
uj5u.com熱心網友回復:
問題是/test-auth位置沒有配置上游,你可以嘗試下面的配置。
$upstream_http_x_test 是正確的。
user nginx;
worker_processes auto;
error_log /dev/stderr debug;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /dev/stderr main;
sendfile on;
keepalive_timeout 65;
upstream content {
server 127.0.0.1:4001;
}
server {
listen 4000;
server_name test;
gzip off;
autoindex off;
location /real-auth {
add_header X-Test "testvalue";
return 200;
}
location /test-auth {
proxy_pass http://127.0.0.1:4000/real-auth;
}
location /proxy {
add_header "X-Test1" "test1";
auth_request /test-auth;
auth_request_set $test $upstream_http_x_test;
auth_request_set $test2 $upstream_status;
add_header X-Test $test;
add_header X-Test2 $test2;
proxy_pass http://content?test=$test&test2=$test2;
proxy_pass_request_body off;
}
}
server {
listen 4001;
add_header X-Test3 "test3";
return 200 "testt response $args";
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315296.html
標籤:nginx
