将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上游configuration:

 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 --link ! 这似乎closures。

什么是正确的方法来做到这一点?

您没有select使用nginx通过一系列的端口,而不是指定每个端口的请求。

我build议尝试一下: https : //github.com/jwilder/nginx-proxy

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

使用 – --network而不是 – --link 。 只要你把所有的容器放在同一个networking中,你就不需要链接它们。 – --link 正在被弃用 。

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