在上游声明中使用变量?

在上游声明中使用变量?

是否可以在 nginx 上游指令中使用变量?

upstream appserver {
    server unix:/socks/$host.sock
}

我绞尽脑汁也找不到答案。

A) 有可能吗?
B) 这是个糟糕的想法吗?

答案1

通常来说,进行这样的配置不是一个好主意。

您最好执行以下操作:

常规配置:

http {
    ...
    include upstreams/*.conf;
    ...
    server {
        ...

上游/*.conf:

使用脚本为你生成这些文件并改变变量,然后使用以下命令重新加载配置nginx -s reload

示例 Python 脚本:

from os import system

upstream = "something"
with open('upstreams/bro.conf', 'w') as f:
    f.write('upstream {0} {{\n\tserver unix:/socks/{0}.sock\n}}'.format(upstream)
system('nginx -s reload')

答案2

a)不是。

b) 是的。我认为它对开发配置很有用,

我认为在开发中使用这段代码没有问题:

proxy_pass http://unix:/socks/$host.sock;

相关内容