Docker nginx conf location指令中的if语句在计算环境变量时抛出错误
我试图在Nginx Conf文件的location指令中放置一个if块。我已经阅读了If is evil文档,并按照指南将返回设置为If block的范围Docker nginx conf location指令中的if语句在计算环境变量时抛出错误,docker,nginx,Docker,Nginx,我试图在Nginx Conf文件的location指令中放置一个if块。我已经阅读了If is evil文档,并按照指南将返回设置为If block的范围 location ^~ /foo/bar/ { if ( $ENVIRONMENT_VARIABLE = '' ) { return 404; } proxy_pass $ENVIRONMENT_VARIABLE; } 上面的if语句比较通过下面给出的docke
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:etc/nginx/conf.d/default.conf:25中的条件无效
有人能帮忙吗?无法找出这是抛出错误的原因。
已尝试以下操作,但出现相同错误
if ( $ENVIRONMENT_VARIABLE = "" )
if ( $ENVIRONMENT_VARIABLE ~ "^$" )
环境变量求值在nginx conf文件中不起作用。我尝试了另一种方法,将conf文件拆分为两个文件,并根据环境变量加载所需的文件。环境变量在docker启动脚本中进行计算。在nginx配置中不是很强,但IIRC
if
只能与内部变量一起使用。环境变量在nginx配置中分解。我不是100%肯定,因为文档不是很清楚: