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

Sim*_*lli 4 nginx nginx-location

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

location /example/ {
    proxy_pass   http://example.com;
}
Run Code Online (Sandbox Code Playgroud)

但不是在 conf 文件中硬编码http://example.com我想在环境变量中使用这个值。

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

小智 7

如果你想在 nginx 配置中加入纯环境变量,你需要用 Lua 语言实现一些代码:

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

如果您在此 NGinx 上没有高负载,我建议您实现上述解决方案。

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

conf.d/example.conf

include backends/exemple.host;

location ~ ^/exemple {

    proxy_pass $exemple;
}
Run Code Online (Sandbox Code Playgroud)

后端/example.host

set $exemple {BACKEND};
Run Code Online (Sandbox Code Playgroud)

本地

sed -i "s@set \$exemple.*@set \$exemple $HOSTNAME\;@"  /etc/nginx/backends/exemple.host
Run Code Online (Sandbox Code Playgroud)

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

  • 我将采用解决方案 2,因为我在 Windows 上使用 nginx 并且不想安装 lua。谢谢 (2认同)