NGINX 在 Set-Cookie 标头中剥离域名

NGINX 在 Set-Cookie 标头中剥离域名

问题:域名从标题中剥离set-cookiehttpoonlyexpirespath都是正确的。

我的位置区块:

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 标头可能会有效,但这似乎是错误的解决方案。

相关内容