我有一个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 --link
!这似乎是关闭。
这样做的正确方法是什么?
答案 0 :(得分:2)
你没有选择使用nginx来通过一系列端口来备用请求而不指定每个请求。
我建议尝试一下:https://github.com/jwilder/nginx-proxy
这是一个nginx容器,可以自动发现需要代理的任何其他容器。它从其他容器读取一些特殊的env var,以便知道如何代理它们。
使用--network
代替--link
。只要将所有容器放在同一网络中,就不需要链接它们。 --link
is being deprecated。
docker network create mynet
docker run --network mynet ........