【发布时间】:2018-09-24 22:33:36
【问题描述】:
我正在尝试使用 nginx 和 docker 的本机 DNS 对 API 服务器进行负载平衡。
我希望 nginx 能够对所有可用服务器进行循环 API 调用。但即使我将 docker 的 DNS 服务器指定为解析器,nginx 也只会将请求转发到一台服务器。
docker-compose.yml 中的相关部分
proxy:
restart: always
build: ./src/nginx/.
ports:
- "8080:8080"
links:
- api:servers.api
nginx.conf
worker_processes 2;
events { worker_connections 1024; }
http {
sendfile on;
server {
listen 8080;
location / {
resolver_timeout 30s;
resolver 127.0.0.11 ipv6=off valid=10s;
set $backend http://servers.api:80;
proxy_pass $backend;
proxy_redirect off;
}
}
}
如果我手动指定每个服务器,NGINX 循环负载均衡器就可以工作,我不想这样做,因为它不能自动扩展。
worker_processes 2;
events { worker_connections 1024; }
http{
sendfile on;
upstream api_servers{
server project_api_1:80;
server project_api_2:80;
server project_api_3:80;
}
server{
listen 8080;
location / {
proxy_pass http://api_servers;
proxy_redirect off;
}
}
}
如何配置 nginx,使其能够检测添加的新容器并将它们包含在循环中?
【问题讨论】: