如何通过 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的主要内容,如果未能解决你的问题,请参考以下文章

nginx如何做反向代理服务器?

002-Nginx 配置文件nginx.conf详解

linux下如何查找nginx配置文件的位置

通过现象看本质——Nginx配置文件详解

通过Nginx部署flask项目和静态站点

如何在linux下查找一个文件夹所在的目录