9

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

set_cookie_flag HttpOnly Secure;
proxy_cookie_path / "/; HTTPOnly; Secure";

每一个都试过了,但只有 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;     
}

请帮助我,我需要在这里添加什么或我错过的任何内容。

提前致谢。

4

4 回答 4

8

记住也要添加SameSite=none

location /foo {
    proxy_pass http://localhost:4000;
    proxy_cookie_path /foo "/; SameSite=None; HTTPOnly; Secure";
}

资料来源:

  1. https://web.dev/samesite-cookies-explained/
  2. https://stackoverflow.com/a/56514484/1561922
于 2020-08-04T07:58:56.403 回答
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 以查看结果。

于 2019-06-09T12:12:00.037 回答
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";到您的配置中。

看完这篇文章,应该就够了。

于 2019-02-04T09:06:07.097 回答
0

该标志仅支持 nginx Plus https://www.nginx.com/products/nginx/modules/cookie-flag/

于 2018-10-04T17:00:07.433 回答