我正在尝试使用nginx和docker的本地DNS来负载均衡API服务器。
我希望nginx可以轮询所有可用服务器的API调用。但即使我将docker的DNS服务器指定为resolver,nginx也只会将请求转发到一个服务器。
以下是docker-compose.yml中相关部分:
如何配置nginx以便它能够检测到新添加的容器并将它们包含在轮询中?
我希望nginx可以轮询所有可用服务器的API调用。但即使我将docker的DNS服务器指定为resolver,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以便它能够检测到新添加的容器并将它们包含在轮询中?