![NGINX 在 Set-Cookie 标头中剥离域名](https://linux22.com/image/701344/NGINX%20%E5%9C%A8%20Set-Cookie%20%E6%A0%87%E5%A4%B4%E4%B8%AD%E5%89%A5%E7%A6%BB%E5%9F%9F%E5%90%8D.png)
问题:域名从标题中剥离set-cookie
。
httpoonly
、expires
和path
都是正确的。
我的位置区块:
location ~* ^/path {
proxy_pass http://nodeserver; # this is an upstream running in another container
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
curl foo.bar.local/path -X GET -I
—— 这会影响 NGINX。set-cookie
标头已通过,但没有domain
。curl localhost/path -X GET -I
—— 访问 NGINX,但是在localhost
域下,不起作用。curl localhost:4010/path -X GET -I
——直接命中(Node)服务器,cookie 已经正确domain
。添加类似的内容
proxy_cookie_domain ~.*$ $http_host;
似乎没有任何效果。- 添加
proxy_cookie_domain ~*.$ foo.bar.local
不起作用。 - 域
add_header Set-Cookie "foo=bar; path=/; domain=$http_host";
设置正确。 - 添加
proxy_cookie_path ~.*$ /foobar;
工作按预期进行(cookie 被重写为具有路径/foobar
)。
在 perl 或 lua 中重写 set-cookie 标头可能会有效,但这似乎是错误的解决方案。