Nginx配置语法错误求助:env变量缺失闭合括号
修复EasyEngine 4.x下Nginx自定义头部校验的语法错误
错误根源与修复后的配置
你遇到的核心问题是环境变量引用缺少闭合括号,补全后结合正确的Nginx变量逻辑,即可实现头部校验。以下是修复后的完整配置片段:
# /usr/local/openresty/nginx/conf/custom/user.conf location / { # 校验X-Custom-Origin-Secret头部与环境变量值是否匹配 if ($http_x_custom_origin_secret != "${env:CUSTOM_ORIGIN_SECRET}") { return 403; } # 保留原location块内的其他默认配置(如proxy_pass等,EasyEngine自动生成的内容) ... }
关键细节说明
- 语法修复:原配置中
${env:CUSTOM_ORIGIN_SECRET遗漏了闭合的},补全后符合OpenResty/Nginx的环境变量引用语法。 - 环境变量加载:确保EasyEngine站点已加载
CUSTOM_ORIGIN_SECRET变量——在站点的/opt/easyengine/sites/[你的站点名]/config/env文件中添加CUSTOM_ORIGIN_SECRET=你的密钥值,执行ee site reload [你的站点名]让变量生效。 - 头部变量转换:Nginx会自动将请求头部
X-Custom-Origin-Secret转换为小写下划线格式的变量$http_x_custom_origin_secret,直接用于对比即可。 - 工具差异解释:在线校验工具未完全模拟OpenResty的环境变量解析逻辑,导致误判通过,本地补全括号后重载配置即可解决报错。
验证方法
- 重载配置:执行
ee site reload [你的站点名](EasyEngine专用命令)或systemctl reload openresty - 测试请求:
- 正确头部请求:
curl -H "X-Custom-Origin-Secret: 你的密钥值" https://你的域名,应返回正常页面内容 - 错误/无头部请求:返回403 Forbidden,说明校验生效
- 正确头部请求:
内容的提问来源于stack exchange,提问作者user25485813
相关产品推荐
相关产品推荐

