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

时间:2018-02-20 08:28:12

标签: nginx setcookie nginx-reverse-proxy

我是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 个答案:

答案 0 :(得分:2)

请记住也要添加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

答案 1 :(得分:1)

另一个替代选择是:

  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以查看结果。

答案 2 :(得分:0)

答案 3 :(得分:0)

我看了这篇文章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";

在这篇文章之后,就足够了。