Nginx:使用嵌入位置时添加标题部分

Nginx:使用嵌入位置时添加标题部分

我有一个 nginx 配置,其中有很多location部分location /。这是因为我们为其他类型的内容等设置了各种缓存策略。

但是,现在我需要一个通用的 http 标头 ( Content-Security-Policy),因此我已将其添加到根位置。但它仅适用于未列出的资源(在我的情况下为favicon.ico)。

我是否真的需要将我的标题复制到所有嵌套位置,或者是否可以为整个部分定义通用配置?

这是我的配置:

location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    add_header Content-Security-Policy "script-src 'self';";
    location ~* \.htm(l?) {

    }
    location ~* \.js {
        add_header Cache-Control 'max-age=86400';
    }
    location ~* \.css {
        ...
    }
    location ~* \.(jpg|jpeg|svg|png) {
        add_header Cache-Control 'max-age=43200';
    }
}

答案1

我建议使用map类似下面的方法:

map $sent_http_content_type $expires {
    application/javascript  86400;
    default                 off;
    ~image/                 43200;
}

然后您可以将配置减少到:

expires $expires;

在您的顶层位置,摆脱单个add_header Cache-Control ...指令,同时能够添加指令add_header Content-Security-Policy ...

相关内容