如何避免 nginx 中 add_header 指令重复?

如何避免 nginx 中 add_header 指令重复?

文档中是这样说的:

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

我的问题是,我有几个location想要缓存的块,比如这个:

add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

location ~ ^/img/(.*)\.(png|jpg|jpeg|gif|bmp)$ {
    expires 1w;
    add_header Cache-Control public;
}

但这会让我丢失块外声明的所有标头。因此,显然唯一的方法是在每个位置块上复制这些标头,例如:

add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

location ~ ^/img/(.*)\.(png|jpg|jpeg|gif|bmp)$ {
    expires 1w;
    add_header Cache-Control public;
    add_header X-Frame-Options SAMEORIGIN;
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
}

似乎不对。有什么想法吗?

答案1

您正在寻找 ngx_headers_more 模块: https://www.nginx.com/resources/wiki/modules/headers_more/

是的,add_header 的行为确实令人恼火:)

相关内容