nginx:使用环境variables

我有以下情况:我有一个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"}; }'; ... } } }