【发布时间】:2021-10-13 13:33:04
【问题描述】:
我有以下测试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";
}
}
我希望请求/proxy URL 将返回所有测试标头:X-Test(身份验证请求返回的标头)、X-Test1(只是一个示例)、X-Test2(身份验证请求 HTTP 状态的值)、X-Test3(由下游的content设置)。
但实际上,这个请求只返回X-Test1 和X-Test2。我无法通过auth_request_set 指令获得任何值(标题或返回状态)。我尝试了在 google 中找到的两种变量名称的变体:$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 变量始终为空。
我做错了什么?
【问题讨论】:
标签: nginx