问题描述
我正在尝试在Nginx Conf文件的location指令中放置一个if块。我已经阅读了如果是邪恶的文档,并已按照指南将if块的范围置于return范围内。
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
预期结果: 如果环境变量未通过/设置,则-访问/ foo / bar将抛出404。 如果传递/设置了环境变量,则-proxy_pass将起作用。
实际结果: [emerg] 1#1:/etc/nginx/conf.d/default.conf:25
中的无效条件https://example.com/有人可以帮忙吗?无法弄清楚为什么这会引发错误。 已经尝试了以下操作,但出现了相同的错误。
if ( $ENVIRONMENT_VARIABLE = "" )
if ( $ENVIRONMENT_VARIABLE ~ "^$" )
解决方法
环境变量评估在nginx conf文件中不起作用。我尝试了另一种方法,将conf文件分为两个文件并根据环境变量加载所需的文件。在docker启动脚本中评估环境变量。