我有一个示例配置:
upstream content {
server 127.0.0.1:4001;
}
server {
listen 4000;
location /test-auth {
add_header X-Test "test value";
return 200;
}
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;
proxy_pass http://content?test=$test&test2=$test2;
proxy_pass_request_body off;
add_header X-Test $test;
add_header X-Test2 $test2;
}
}
server {
listen 4001;
add_header X-Test3 "test3";
return 200 "test response $args";
}
字符串
我想在请求/proxy
时将X-Test
头从auth位置传递到浏览器。这应该由auth_request_set
指令通过拉取$upstream_http_x_test
变量值来完成。但是当在auth端点输出中设置了header时,它总是空的。当直接访问/test-auth
时,它会出现在输出中。但是我在/proxy
的位置找不到它。此外,$upstream_status
应该始终显示auth请求状态,但它也是空的。当我向/proxy
发出请求时,我只得到以下内容:
X-Test3: test3
X-Test1: test1
test response test=&test2=
型
但是我还需要让X-Test
和X-Test2
头由来自auth请求的数据和内容部分中的相应值填充。/test-auth
端点被正确调用。如果我在其中返回401,那么对/proxy
的请求也会以401失败。
我做错了什么?
1条答案
按热度按时间7vhp5slm1#
auth_request_set
变量在location
块中不可访问,但在access_by_lua
中可用,请尝试以下操作:字符串