如何在Nginx中正确引用Lua设置的变量解决proxy_pass配置报错
Nginx Lua 环境变量 proxy_pass 配置错误修复方案
核心报错原因
日志中的语法报错和变量不生效问题由两个错误导致:
set_by_lua的内联Lua代码没有用引号包裹且缺少return关键字,Nginx解析Lua代码时出现语法冲突proxy_pass指令不支持直接在参数内混合变量和固定字符串拼接,会把变量标识识别为普通字符串
正确配置示例
user nginx; env ES_USERNAME; env ES_PWD; worker_processes 1; events { worker_connections 10240; } http { server { listen 8080; server_name localhost; # 用引号包裹Lua代码,加return返回环境变量取值 set_by_lua $es_username 'return os.getenv("ES_USERNAME")'; set_by_lua $es_pwd 'return os.getenv("ES_PWD")'; location /health { # 提前拼接完整代理地址到独立变量 set $es_proxy_url "http://$es_username:$es_pwd@elk-es-http:9200/_cluster/health"; proxy_pass $es_proxy_url; } # 剩余原有配置保持不变 ...
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

