为“复杂”的容器环境配置Nginx反向代理

场景:现有几台服务器,各部署有十几到数十个Docker容器,容器相互之间独立没有关联,每个容器各自暴露一个到几十个端口不等,而且部分容器端口是随机的。

任务:把全部容器绑定到一个域名之下。

不废话,十条命令之内解决这件事。

第一步:拉取nginx,这里用的是tutum公司的镜像,这个公司的镜像质量都很高。

docker pull tutum/nginx

第二步:根据Dockerfile开了两个数据卷,方便写配置以及部署应用。

docker run -d -p 80:80 -v /**path**/app/:/app/ -v /**path**/nginx/sites-enabled:/etc/nginx/sites-enabled tutum/nginx

第三步:编辑/**path**/nginx/sites-enabled/default文件如下:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /app;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}
# 上面是默认的不用管也可以。
server
{
    listen 80;
    server_name lab.example.com; # 这里填自定义域名
    location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://172.17.0.3:8181; # 这里填容器地址,如果不知道填写公网IP也是可以的。
    }
}

暂时先这样,端口多变还没有解决,有时间补上。

参考资料

    原文作者:左蓝
    原文地址: https://www.jianshu.com/p/5a5e94cb98c5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞