如何在nginx(1.4.6 ubuntu)配置中有条件地添加 header ?
起初我尝试过这样。
location / {
add_header X-TEST-0 always-0;
set $true 1;
if ($true) {
add_header X-TEST-1 only-true;
}
add_header X-TEST-2 always-2;
}
尽管我期望我的nginx设置所有 header (X-TEST-0,1,2),但它仅添加 header X-TEST-1。
接下来,我尝试这样。
location / {
add_header X-TEST-0 always-0;
##set $true 1;
##if ($true) {
## add_header X-TEST-1 only-true;
##}
add_header X-TEST-2 always-2;
}
我的nginx按我的预期添加了标题X-TEST-1和X-TEST-2。
我的问题是...
提前致谢!
最佳答案
如果您以不同的方式思考并使用 map ,这很简单。
map $variable $headervalue {
1 only-true;
default '';
}
# ...later...
location / {
add_header X-TEST-1 $headervalue;
}
如果$ variable为1,将设置$ headervalue,从而添加标题。
默认情况下,$ headervalue将为空,并且不会添加标题。
这是有效的,因为Nginx仅在需要时评估 map (到达$ headervalue的地步)。
看到类似的东西:https://serverfault.com/questions/598085/nginx-add-header-conditional-on-an-upstream-http-variable
关于nginx - 如何在nginx配置中有条件地添加标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29467671/