资讯专栏INFORMATION COLUMN

使用 nginx 反向代理多个 docker 容器

Hanks10100 / 3771人阅读

摘要:架构服务器中已存在的是镜像,可以运行环境以及其他的,包含了等。添加容器新添加一个容器用来做反向代理。推荐使用版本查看镜像,生成新的容器,。参考资料转载记一次用运行容器做域名反向代理时踩的坑如何从容器内部获取主机。

导语

之前介绍 docker 的时候说过它的优势之一,就是可以在同一服务器中搭建多个环境,互相隔离。昨天就实际操作下,万万没想到如此多的坑,比之前从零开始搭建服务器都费时间。变换了好几种方案,最终还是解决了,中间的心酸就忽略吧,直接说操作方法。

架构

服务器中已存在的是 laradock 镜像,可以运行 laravel 环境以及其他的 PHP,包含了 nginx、mysql、redis 等。
我的想法是再添加一个 nginx 容器,用来做反向代理。根据子域名进行分发,可以分发给 laradock,也可以给其他任何容器(包括 wordpress、python、java)等等

修改 lradock

要修改的只有一个地方,就是 nginx 监听的端口。

进入到 laradock 目录中

修改 .env 文件,修改 NGINX_HOST_HTTP_PORT 值由 808000

停止 nginxdocker-compose stop nginx

重装 nginxdocker-compose build nginx

启动 docker-compose up -d nginx

这个时候在浏览器中是不能访问成功的,因为 nginx 已经不再监听 80 端口。

添加 nginx 容器

新添加一个 nginx 容器用来做反向代理。在安装 laradock 的时候,已经有了 nginx:alpine 的镜像,可以直接生成容器。当然你也可以重新 pull 一个新的镜像。(推荐使用 alpine版本)

查看 nginx 镜像 ID,docker iamges

生成新的 ngixn 容器, docker run --name proxy_nginx -p 80:80 -d [nginx image id]。也可以添加 -v 参数来映射配置文件,我的环境较少变动就不需要了

此时在浏览器中访问,应该是 nginx 的默认页面,说明启动成功

进入到生成的容器中 docker exec -it proxy_nginx sh

安装 vimapk add vim

查看宿主机 ip,/sbin/ip route|awk "/default/ { print $3 }"

/etc/nginx/conf.d/ 目录下添加新配置文件 laradock.conf,内容如下

server {
    listen  80;
    server_name  you_site;

    location / {
        proxy_set_header  Host  $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://[宿主机IP]:8000;
    }
}

退出容器,然后重启 docker restart proxy_nginx

打开 8000 端口,参考这里

结语

这个时候访问的话,就可以代理到 laradock 中的 nginx 了。后续想要新增其他的容器,只要在 proxy_nginx 中添加新的代理规则就可以了。


参考资料:【转载】记一次用 Docker 运行 Nginx 容器做域名反向代理时踩的坑、如何从容器内部获取主机IP。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40595.html

相关文章

  • 使用 nginx 反向代理多个 docker 容器

    摘要:架构服务器中已存在的是镜像,可以运行环境以及其他的,包含了等。添加容器新添加一个容器用来做反向代理。推荐使用版本查看镜像,生成新的容器,。参考资料转载记一次用运行容器做域名反向代理时踩的坑如何从容器内部获取主机。 导语 之前介绍 docker 的时候说过它的优势之一,就是可以在同一服务器中搭建多个环境,互相隔离。昨天就实际操作下,万万没想到如此多的坑,比之前从零开始搭建服务器都费时间。...

    Wildcard 评论0 收藏0
  • Docker 自动化 Nginx 反向代理

    摘要:一个反向代理可以帮助处理这些问题,同时通过减轻零停机部署的困难来提升可用性。生成反向代理配置文件当一个容器被启动和停止的时候,设置一个反向代理配置可能是复杂的。这些可以被用于自动地生成一个反向代理配置。 自动化 Nginx 反向代理 Docker 标签(空格分隔): Docker Nginx Automated 本文作者是 jwilder,原文地址是 Automated N...

    shiina 评论0 收藏0
  • Docker 自动化 Nginx 反向代理

    摘要:一个反向代理可以帮助处理这些问题,同时通过减轻零停机部署的困难来提升可用性。生成反向代理配置文件当一个容器被启动和停止的时候,设置一个反向代理配置可能是复杂的。这些可以被用于自动地生成一个反向代理配置。 自动化 Nginx 反向代理 Docker 标签(空格分隔): Docker Nginx Automated 本文作者是 jwilder,原文地址是 Automated N...

    codergarden 评论0 收藏0
  • 使用Docker+Nginx模拟负载均衡

    摘要:以及自动剔除因故障负载均衡列表中宕机的服务器。这两天折腾了一下的安装配置,并通过模拟出在多服务器提供服务的状态下的负载均衡。修改好配置文件后,使用重新载入配置。 原文发表于我的博客,转载请注明出处 一直听说Nginx的强大,它不仅可以作为Web服务器,按照调度规则实现动态、静态页面的分离;还可以作为反向代理服务器,构建服务集群,按轮询、权重等多种方式对后端服务器做负载均衡。以及自动剔...

    davidac 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<