我使用 nginx 作为反向代理来为仅支持 https 的网站提供服务。因此,我希望将此网站的 cookie 标记为安全。但后端服务器是 http 服务器,因此它不会为其 cookie 设置安全标志。我如何修改响应中的 Set-Cookie 标头以添加安全标志?
答案1
您可能能够让您的 nginx 代理修改后端创建的 cookie 并设置安全标志 - 请参阅如何在 nginx 反向代理中重写 Set-Cookie 的域部分?。
不过,我认为让在后端创建 cookie 的任何东西来设置安全标志会是一个更好的解决方案。如何做到这一点又是另外一个故事(或问题 :)。
答案2
我使用以下 nginx 配置代码:
# make cookie secure (case sensitive)
proxy_cookie_domain ~(?P<secure_domain>([-0-9a-z]+\.)?[-0-9a-z]+\.[a-z]+)$ "$secure_domain; secure";
当然,您也可以使用 FQDN,而不是正则表达式来使其动态化。
答案3
这对我有帮助:
proxy_cookie_path / "/; secure";
看http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cookie_path