将Nginx Docker容器连接到16个工作人员

我有一个Nginx Docker容器,以及16个负载均衡的Web服务器,每个服务器都暴露主机上的一个端口,8081-8096:

docker run -d \
    --restart always \
    --name "web.${name}" \
    -v /srv/web/web-bundle:/bundle \
    -p "${port}":80 \
    kadirahq/meteord:base

在我尝试扩展之前,我的Nginx容器以前链接到唯一的Web图像:

docker run -d \
    --name nginx \
    --link web.1:web.1 \
    -v /srv/nginx:/etc/nginx \
    -v /srv/nginx/html:/usr/share/nginx/html \
    -p 80:80 \
    -p 443:443 \
    nginx

Nginx上游配置:

upstream web {
        ip_hash;
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
        server 127.0.0.1:8083;
        # ... you get the point
}

我需要这个Nginx图像能够达到127.0.0.1:8081-8096,但它似乎不允许这样.我不想做16个链接!这似乎是关闭.

这样做的正确方法是什么?

最佳答案
你没有选择使用nginx来通过一系列端口来备用请求,而无需指定每个端口.

我建议试试这个:https://github.com/jwilder/nginx-proxy

这是一个nginx容器,可以自动发现需要代理的任何其他容器.它从其他容器读取一些特殊的env var,以便知道如何代理它们.

使用–network而不是–link.只要将所有容器放在同一网络中,就不需要链接它们. – 链接is being deprecated.

docker network create mynet
docker run --network mynet ........

转载注明原文:将Nginx Docker容器连接到16个工作人员 - 代码日志