Nginx
Nginx:帶有正則表達式的上游伺服器指令
我有一個基於 docker 的架構:可配置數量的容器由一個 nginx 容器進行負載平衡。所有這些容器都存在於同一個本地網路上,
backend
(由 創建docker-compose
)。我想要負載平衡的容器將始終在 port 上偵聽
77894
,並且始終具有形式的名稱model_*
(其中*
可以是任何正整數)。單個 nginx 容器中的nginx.conf
需要正確配置。這
nginx.conf
工作正常,但我必須model
在服務中明確指定每個副本upstream
: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
?
該
server
指令僅支持顯式上游 IP 地址:埠對或 Unix 域套接字路徑。您應該使用配置管理系統,它會同時更新 nginx 配置文件並設置容器,因此始終保持 nginx 配置同步。
一種選擇是
server
在該部分中添加所有可能的條目,upstream
並讓 nginx 檢測後端是否可用。如果 nginx 過於頻繁地嘗試使用不存在的後端,fail_timeout
則可以從預設的 10 秒值增加值。