Nginx:如何仅将标头添加到特定文件和文本

我有多个网址需要使用nginx添加相同的标头集.这是文件名.

File Group1
    https://www.example.com/news/2017-08-03/article-xyz/
    https://www.example.com/news/2017-08-03/article-xyz/topics/
    https://www.example.com/news/2017-08-03/article-xyz/gallery/

File Group2
    https://www.example.com/news/2017-08-02/article-abc/
    https://www.example.com/news/2017-08-02/article-abc/topics/
    https://www.example.com/news/2017-08-02/article-abc/gallery/

所以在这种情况下,文件组1需要:

add_header Cache-Tag  article-xyz;

而文件组2需要:

add_header Cache-Tag  article-abc;

所以nginx.conf应该是这样的

  location /news/ {
        add_header Cache-Tag  article-abc;
    }

但是如何在添加标头中动态应用它?
最佳答案
一种解决方案是在$request_uri值上使用map指令.例如:

map $request_uri $cache_tag {
    default        "";
    ~/article-xyz/ "article-xyz";
    ~/article-abc/ "article-abc";
}
server {
    ...
    add_header Cache-Tag $cache_tag;
    ...
}

地图块位于服务器块之外(如图所示). add_header语句可以位于服务器作用域中,也可以位于最终处理请求的位置块中(取决于继承规则).有关详细信息,请参见this和this.

不要在map指令中使用捕获,因为它不起作用.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。