如何通过nginx.conf文件在Nginx中设置Secure属性为Set-cookie

Ram*_*avi 8 nginx setcookie session-cookies nginx-reverse-proxy nginx-config

我是 Nginx 服务器的新手。最近开始工作 nginx 项目。我的任务是通过 nginx.conf 文件设置安全标头。我正确设置了一些标题,但无法为 Set-cookie 设置。我的要求是,在响应头中 Set-Cookie 应该具有 Secure 和 HTTPOnly 属性。在 nginx.conf 文件中添加了以下两个指令

set_cookie_flag HttpOnly Secure;
proxy_cookie_path / "/; HTTPOnly; Secure";
Run Code Online (Sandbox Code Playgroud)

也尝试了每一个和两个,但只有 HttpOnly 来了。请在下面查看我的 conf 文件片段

server {
    listen       80;
    server_tokens off;
    server_name  http://{{ getenv "PROXY_URL" }};
    set_cookie_flag HttpOnly Secure;
    proxy_cookie_path / "/; HTTPOnly; Secure"; 
    include routes;     
}
Run Code Online (Sandbox Code Playgroud)

请帮助我,我需要在这里添加什么或我错过了什么。

提前致谢。

geo*_*yws 6

记得添加SameSite=none

location /foo {
    proxy_pass http://localhost:4000;
    proxy_cookie_path /foo "/; SameSite=None; HTTPOnly; Secure";
}
Run Code Online (Sandbox Code Playgroud)

资料来源:

  1. https://web.dev/samesite-cookies-explained/
  2. /sf/answers/3956013911/

  • 为什么要添加 SameSite=none?您想要在第三方上下文中发送 cookie 吗?我认为宽松或严格是更好的选择。 (2认同)
  • 在较新的 nginx(我认为是 1.19 或更高版本)上:`proxy_cookie_flags ~ secure;` (2认同)

Mic*_* A. 5

我看了这篇文章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";到您的配置中。

跟着文章,应该够了。


小智 5

另一种选择是:

  1. 转到此目录:“/etc/nginx/conf.d”。

  2. 创建一个名为 ssl.conf 的空文本文件(如您所见,那里有 example_ssl.conf)。

  3. 在 ssl.conf(或 default.conf)中添加以下语法:

    server { proxy_cookie_path / "/; HTTPOnly; Secure";}

    请注意,整个路径“/”将被替换。例如指令“proxy_cookie_path /two/ /;” 将“path=/two/one/uri/”重写为“path=/one/uri/”。

  4. 打开 /etc/nginx/nginx.conf 并添加以下命令:

    include /etc/nginx/conf.d/ssl.conf

  5. 重新启动 Nginx 以查看结果。