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

问题描述

我正在尝试在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启动脚本中评估环境变量。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...