如何在NGINX的try_files规则中仅为text/html文件添加响应头
仅为NGINX中text/html类型文件添加响应头的解决方案
针对你现有的NGINX location配置,要实现仅给text/html类型文件添加响应头,可以利用NGINX内置的$content_type变量结合条件指令来完成,以下是两种可行方案:
方案一:在location内直接使用if判断
修改原location配置,加入基于$content_type的条件判断:
location / { try_files $uri /index.html; if ($content_type = text/html) { add_header X-Custom-Header "自定义内容"; # 替换为你需要的响应头键值对 } }
注:NGINX默认的mime.types配置已经包含了text/html的类型映射,只要静态文件的扩展名正确(比如.html),$content_type会被自动设置为text/html。
方案二:使用map指令(更稳妥,规避if的潜在问题)
在server块外层或http块中定义map规则,再在location中引用:
# 可放在http块或当前server块的上方 map $content_type $html_header_value { default ""; text/html "自定义内容"; } server { # 你的其他server配置... location / { try_files $uri /index.html; add_header X-Custom-Header $html_header_value always; } }
其中always参数确保即使返回非2xx状态码(比如404)时也会添加响应头,若不需要此特性可移除该参数。
内容的提问来源于stack exchange,提问作者PixelPaul
相关产品推荐
相关产品推荐

