我有一个基于码头的体系结构:一个可配置的容器数量被一个nginx容器负载平衡。所有这些容器都存在于同一个本地网络,backend (由docker-compose创建)。
我想要加载平衡的容器总是侦听端口77894,并且总是有一个表单model_*的名称( *可以是任何正整数)。需要正确配置单个nginx容器中的nginx.conf。
这个nginx.conf工作得很好,但是我必须在model服务中显式地指定每个D7副本:
http {
upstream models {
server model_1:77894;
server model_2:77894;
server model_3:77894;
}
server {
listen 80;
location / {
proxy_pass http://models;
}
}
}
events { }这不是动态的;我必须事先知道model_*副本的数量。
当我尝试这个(和其他变体)时:
upstream {
server ~ ^model_[0-9]:77894
}nginx抛出错误:invalid parameter "^model_[0-9]:77894" in /etc/nginx/nginx.conf:4
有没有办法告诉nginx将代理反向到所有名称为model_*:77894的容器?
发布于 2020-09-15 17:37:57
server指令只支持显式的上游IP地址:端口对或Unix域套接字路径。
您应该使用配置管理系统,它更新nginx配置文件并同时设置容器,因此始终保持nginx配置保持同步。
一种选择是将所有可能的server条目添加到upstream部分,让nginx检测后端是否可用。如果nginx太频繁地尝试使用不存在的后端,则可以从默认的10秒值增加fail_timeout值。
https://serverfault.com/questions/1034013
复制相似问题