无法为NGINX反向代理缓存的内容设置HTTP标头

时间:2016-04-24 14:23:33

标签: security caching nginx http-headers reverse-proxy

我有一个Node.js应用程序,在端口8080上运行,前面运行NGINX服务器并充当缓存反向代理。

我希望NGINX缓存每一个页面,除了一个页面,我的应用程序的dashbaord:/dashboard

到目前为止,这是我的配置:

    server {

    listen       80;
    server_name  mydomain.name;

    # SECURITY
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options nosniff;
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' https://gravatar.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; object-src 'none'";

    ...

    proxy_set_header       Host $host;
    proxy_set_header   X-Forwarded-For $remote_addr;

    location / {
        add_header X-Proxy-Cache $upstream_cache_status;
        proxy_cache            STATIC;
        proxy_pass         http://127.0.0.1:8080;
    }

    location /dashboard {
        proxy_pass         http://127.0.0.1:8080/dashboard;
    }
}

缓存似乎运行正常,但安全标头(X-XSS-ProtectionContent-Security-Policy等)似乎只添加到/dashboard而不是{{1}的缓存页面}或/

我目前的配置是否有问题?我该怎么做才能解决问题?

1 个答案:

答案 0 :(得分:1)

如果正在处理的位置块中有“add_headers”,则忽略位置块之外的任何“add_header”指令。由于“/ dashboard”没有“add_header”,服务器级别1正在使用中。

根据docs

  

可能有几个add_header指令。当且仅当在当前级别上没有定义add_header指令时,这些指令才从前一级继承。