是否可以在 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;