我有多个 URL 需要使用 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;
}
但是如何在添加标题时动态应用它?
答案1
一种解决方案是使用值map
上的指令$request_uri
。例如:
map $request_uri $cache_tag {
default "";
~/article-xyz/ "article-xyz";
~/article-abc/ "article-abc";
}
server {
...
add_header Cache-Tag $cache_tag;
...
}
块map
位于server
块之外(如图所示)。语句add_header
可以在范围内,也可以在最终处理请求的块server
中(受继承规则约束)。请参见location
这和这了解详情。
不要在map
指令中使用捕获,因为它不起作用。