nginx-conf位置指令中的if语句在评估环境变量时抛出错误



我正在尝试将if块放在Nginx Conf文件的位置指令中。我已经阅读了If is邪恶文档,并遵循了将return与If块的范围放在一起的准则。

location ^~ /foo/bar/ {
if ( $ENVIRONMENT_VARIABLE = '' ) { 
return 404;
}
proxy_pass $ENVIRONMENT_VARIABLE;
}

上面的if语句比较通过下面给出的docker run命令传递的环境变量。

docker run --rm -p 8081:80 -e ENVIRONMENT_VARIABLE=https://example.com/ nginx-image

预期结果:如果环境变量不是passs/set,那么-accessing/foo/bar将抛出404。如果传递/设置了环境变量,那么-proxy_pass将起作用。

实际结果:[emerg]1#1:无效条件https://example.com/在/etc/nginx/conf.d/default.conf:25 中

有人能帮忙吗?不明白为什么这是抛出错误。已经尝试了以下操作,但出现了相同的错误。

if ( $ENVIRONMENT_VARIABLE = "" ) 
if ( $ENVIRONMENT_VARIABLE ~ "^$" ) 

环境变量评估在nginx conf文件中不起作用。我尝试了一种不同的方法,将conf文件拆分为两个文件,并根据环境变量加载所需的文件。环境变量在docker启动脚本中进行评估。

最新更新