如何通过 nginx.conf 文件在 Nginx 中将 Secure 属性设置为 Set-cookie
Posted
技术标签:
【中文标题】如何通过 nginx.conf 文件在 Nginx 中将 Secure 属性设置为 Set-cookie【英文标题】:How to set Secure attribute to Set-cookie in Nginx through nginx.conf file 【发布时间】:2018-07-30 13:09:32 【问题描述】:我是 nginx 服务器的新手。最近开始工作 nginx 项目。我的任务是通过 nginx.conf 文件设置安全标头。我正确设置了一些标题,但无法为 Set-cookie 设置。 我的要求是,响应标头 Set-Cookie 应该具有 Secure 和 HTTPOnly 属性。在 nginx.conf 文件中添加以下两个指令
set_cookie_flag HttpOnly Secure;
proxy_cookie_path / "/; HTTPOnly; Secure";
每个都试过了,但只有 HttpOnly 来了。 请在下面查看我的 conf 文件 sn-p
server
listen 80;
server_tokens off;
server_name http:// getenv "PROXY_URL" ;
set_cookie_flag HttpOnly Secure;
proxy_cookie_path / "/; HTTPOnly; Secure";
include routes;
请帮助我,我需要在此处添加什么或我错过的任何内容。
提前致谢。
【问题讨论】:
【参考方案1】:该标志只支持 nginx Plus https://www.nginx.com/products/nginx/modules/cookie-flag/
【讨论】:
【参考方案2】:我看过这篇文章https://geekflare.com/httponly-secure-cookie-nginx/
为了使用set_cookie_flag HttpOnly Secure;
,您需要从源代码构建nginx,同时添加安全cookie附加模块--add-module=/path/to/nginx_cookie_flag_module
的路径。
如果你不想从源代码构建 nginx,你可以只添加 proxy_cookie_path / "/; HTTPOnly; Secure";
到你的配置中。
按照文章,应该够了。
【讨论】:
【参考方案3】:另一种选择是:
进入这个目录:“/etc/nginx/conf.d”。
创建一个名为 ssl.conf 的空文本文件(如您所见,那里有 example_ssl.conf)。
在 ssl.conf(或 default.conf)中添加以下语法:
server proxy_cookie_path / "/; HTTPOnly; Secure";
请注意,整个路径“/”将被替换。例如指令“proxy_cookie_path /two/ /;”会将“path=/two/one/uri/”重写为“path=/one/uri/”。
打开 /etc/nginx/nginx.conf 并添加以下命令:
include /etc/nginx/conf.d/ssl.conf
重启 Nginx 看看效果。
【讨论】:
谢谢,是否可以只使用 httponly 选项而没有安全?因为我想在没有 https 的情况下测试它?【参考方案4】:记得添加SameSite=none
:
location /foo
proxy_pass http://localhost:4000;
proxy_cookie_path /foo "/; SameSite=None; HTTPOnly; Secure";
来源:
-
https://web.dev/samesite-cookies-explained/
https://***.com/a/56514484/1561922
【讨论】:
为什么要添加 SameSite=none?您希望在第三方上下文中发送 cookie 吗?我认为 Lax 或 Strict 是更好的选择。以上是关于如何通过 nginx.conf 文件在 Nginx 中将 Secure 属性设置为 Set-cookie的主要内容,如果未能解决你的问题,请参考以下文章