在nginx.conf中使用环境变量或参数

时间:2019-04-03 12:11:45

标签: nginx nginx-location

我尝试在nginx.conf中添加一个proxy_pass

location /example/ {
    proxy_pass   http://example.com;
}

但我不想在conf文件中进行硬编码http://example.com,而是希望在环境变量中使用此值。

如何在nginx.conf中使用环境变量?还是nginx有更好的方法没有外部配置?

1 个答案:

答案 0 :(得分:1)

如果要将纯环境变量放入nginx配置,则需要使用Lua语言实现一些代码:

https://blog.doismellburning.co.uk/environment-variables-in-nginx-config/

如果您对此NGinx的负载不高,我建议实施上述解决方案。

在我的特定情况下,为了减少CPU负载,我更喜欢在机器启动时使用带有变量的分隔文件和rc.local(或dockerfile)中的脚本来更改这些文件。

conf.d / exemple.conf

include backends/exemple.host;

location ~ ^/exemple {

    proxy_pass $exemple;
}

后端/示例主机

set $exemple {BACKEND};

rc.local

sed -i "s@set \$checkout.*@set \$checkout $HOSTNAME\;@"  /etc/nginx/backends/exemple.host

要使最后一个解决方案有效,我需要在操作系统上更改NGinx的启动顺序。