可能是this question的副本,但没有答案,我在那儿尝试了建议,但无法使它生效。我需要先授权每个请求,然后再代理它,我正尝试通过Cookie进行操作,但是未在任何后续请求中设置Cookie值。互联网上的大多数地方都推荐类似以下的内容
server {
auth_request /auth;
location /auth {
internal;
proxy_pass http://auth:8080/auth;
auth_request_set $saved_set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $saved_set_cookie;
}
}
但这似乎不起作用。我甚至尝试使用自定义标头来查看是否可以看到它,如上面的问题所述,它不起作用。
server {
auth_request /auth;
location /auth {
internal;
proxy_pass http://auth:8080/auth;
auth_request_set $saved_set_cookie $upstream_http_set_cookie;
add_header X-COOKIE-TEST $saved_set_cookie;
}
}
如果我直接进入身份验证服务器,我确实会看到cookie已设置
答案 0 :(得分:0)
在 https://github.com/nginxinc/NGINX-Demos/blob/331fd357e6e1813b5d41aed48880cf274d31dcee/oauth2-token-introspection-oss/frontend.conf#L29 找到了一个可行的解决方案,它非常简单(Nginx 1.18.0):
location / {
auth_request /authz;
auth_request_set $new_cookie $sent_http_set_cookie; # use sent_http_*, not upstream_http_*
add_header Set-Cookie $new_cookie;
add_header X-Test $sent_http_set_cookie; # it's even working directly
}