Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker nginx conf location指令中的if语句在计算环境变量时抛出错误_Docker_Nginx - Fatal编程技术网

Docker nginx conf location指令中的if语句在计算环境变量时抛出错误

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

我试图在Nginx Conf文件的location指令中放置一个if块。我已经阅读了If is evil文档,并按照指南将返回设置为If block的范围

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%肯定,因为文档不是很清楚: