应用程序处理所有路由。因此,这个基本配置块可以正常工作:
location / {
try_files $uri $uri/ /index.html;
}
问题是,每当访问者请求某个 URI 时,我都想添加自定义标头。例如。/content
好吧,这一定很简单,因为:
location ~ ^/content {
try_files $uri $uri/ /index.html;
add_header X-CUSTOM-HEADER value;
}
但那不管用。Nginx 没有创建该标头。然后,我尝试try_files
从内容阻止,但这显然不起作用,因为/content
根目录中没有“真实”文件夹。因此,nginx 将抛出404 未找到错误。
我也尝试将该块移动到根位置块内。同样不起作用。
在 Apache 中,可以使用以下命令轻松完成此操作:
<If "%{THE_REQUEST} =~ pattern">
Header set HEADER value;
</If>
答案1
您可以使用映射变量设置标头。如果将变量设置为空字符串,则标头将被默默丢弃。
例如:
map $request_uri $myheader {
~^/content a_value;
}
server {
...
add_header X-CUSTOM-HEADER $myheader;
location / {
try_files $uri $uri/ /index.html;
}
}