【问题标题】:add security headers in NGINX while using fastcgi caching使用 fastcgi 缓存时在 NGINX 中添加安全标头
【发布时间】:2020-10-09 11:41:18
【问题描述】:

我正在使用带有 fastcgi 缓存的 nginx。我想在我的网站上使用安全标头。我已经在我的虚拟主机配置中添加了添加标头字段,但是除非我在我的 fastcgi_main.conf 文件中禁用 add_header X-fastcgi cache $upstream cache status ,否则我无法获得任何标头。 虚拟主机文件:

    }
   include /etc/nginx/bots.d/blockbots.conf;
   include /etc/nginx/bots.d/ddos.conf;
   include /etc/nginx/skip_cache.conf ;
   include /etc/nginx/purge_location.conf ;
   include /etc/nginx/gzip_location.conf ;
   include /etc/nginx/security_wp.conf;
        add_header Referrer-Policy 'origin';
        add_header "X-Frame-Options: sameorigin" always;
    location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass  unix:/var/run/php/php7.3-fpm.sock;
    include "/etc/nginx/customfastcgi" ;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
    proxy_read_timeout 300;
    send_timeout 300;
#    underscores_in_headers on;
client_max_body_size 256M;
    include /etc/nginx/fastcgi_main.conf ;
    }

}

FASTCGI_main.conf

        fastcgi_no_cache $skip_cache;
        fastcgi_cache phpcache;
        fastcgi_cache_valid 200 1m;
        fastcgi_cache_valid 301 1m;
        fastcgi_cache_valid 302 1m;
        fastcgi_cache_valid 307 1m;
        fastcgi_cache_valid 404 1m;
        fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;
        fastcgi_cache_min_uses 1;
        fastcgi_cache_methods GET HEAD;
        fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
       add_header X-FastCGI-Cache $upstream_cache_status;
    ```

RESULT:
curl -I https://dev-kuhicbury.$domain
HTTP/1.1 200 OK
Server: nginx/1.10.3 (Ubuntu)
Date: Fri, 09 Oct 2020 11:39:35 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
rel="https://api.w.org/"
X-FastCGI-Cache: HIT

【问题讨论】:

    标签: security nginx header fastcgi


    【解决方案1】:

    您遇到了add_header 指令的一个非常常见的配置陷阱。 与 NGINX 中所有其他类似数组的指令类似,如果当前上下文中没有其他 add_header,它被继承。

    典型的解决方案是复制粘贴(通过不可避免的重复),将所需的标题复制到特定位置:

    FASTCGI_main.conf:

            fastcgi_no_cache $skip_cache;
            fastcgi_cache phpcache;
            fastcgi_cache_valid 200 1m;
            fastcgi_cache_valid 301 1m;
            fastcgi_cache_valid 302 1m;
            fastcgi_cache_valid 307 1m;
            fastcgi_cache_valid 404 1m;
            fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;
            fastcgi_cache_min_uses 1;
            fastcgi_cache_methods GET HEAD;
            fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
            add_header X-FastCGI-Cache $upstream_cache_status;
            add_header Referrer-Policy 'origin';
            add_header "X-Frame-Options: sameorigin" always;
    

    NGINX 的这种不直观的行为给许多人带来了麻烦。

    以下是一些感兴趣的模块,它们解决了相同的问题(如“更好的add_header”):

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 2020-06-08
      • 1970-01-01
      • 2012-03-16
      • 2019-10-11
      • 2017-01-10
      • 2016-02-21
      • 1970-01-01
      • 2016-06-30
      相关资源
      最近更新 更多