我有以下情况:我有一个envvariables$SOME_IP
定义,并希望在nginx块中使用它。 参考nginx文档 ,在nginx.conf
文件中使用env
指令,如下所示:
user www-data; worker_processes 4; pid /run/nginx.pid; env SOME_IP;
现在我想用这个variables作为proxy_pass
。 我尝试了如下:
location / { proxy_pass http://$SOME_IP:8000; }
但是我最终得到这个错误消息: nginx: [emerg] unknown "some_ip" variable
正确的用法是$SOME_IP_from_env
,但是从nginx.conf中设置的环境变量不能在服务器,位置或http块中使用。
如果使用包含Lua的openresty包 ,则可以使用环境变量。
你可以通过模块访问变量 – 我找到了使用Lua和Perl的选项。
写在我公司的博客上:
https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html
TL; DR:
env API_KEY;
接着:
http { ... server { location / { # set var using Lua set_by_lua $api_key 'return os.getenv("API_KEY")'; # set var using perl perl_set $api_key 'sub { return $ENV{"API_KEY"}; }'; ... } } }