尝试在 auth_request 调用中创建一个 cookie 并将其传递到下游以供立即使用。到目前为止,我能做到的最好的方法是在调用完成后在浏览器中设置 cookie:
auth_request /blah/blah;
auth_request_set $saved_set_cookie $upstream_http_set_cookie;
add_header Set-Cookie $saved_set_cookie;
直到下一个请求,该 cookie 才会在下游可用。我总是可以通过执行以下操作来获取新的 cookie,但将它放在新的标头名称中并不理想:
auth_request_set $saved_cookie_try_2 $upstream_cookie_COOKIE_NAME;
proxy_set_header X-Fake-Cookie $saved_cookie_try_2;
这允许 cookie 值作为自定义标头立即可用,但不如仅拥有 cookie 方便。
有什么建议么?
更新1:
我能够添加到现有的 cookie 或将它们完全替换为:
proxy_set_header Cookie "$http_cookie; $saved_set_cookie";
or
proxy_set_header Cookie "$saved_set_cookie";
我无法想出一种方法来设置或只替换一个 cookie。
更新 2:
我可能可以使用 NGiNX 地图功能来完成这项任务:
map $http_cookie $auth_header {
default "";
"~*yourCookieName=(?<variable>[^;]+)" "the value you wanna set
$variable";
}