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


本文摘自PHP中文网,作者藏色散人,侵删。

导语

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

推荐教程:nginx教程

架构

服务器中已存在的是 laradock 镜像,可以运行 laravel 环境以及其他的 PHP,包含了 nginx、mysql、redis 等。

我的想法是再添加一个 nginx 容器,用来做反向代理。根据子域名进行分发,可以分发给 laradock,也可以给其他任何容器(包括 wordpress、python、java)等等

修改 lradock

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

1.进入到 laradock 目录中

2.修改 .env 文件,修改 NGINX_HOST_HTTP_PORT 值由 80 为 8000

3.停止 nginx, docker-compose stop nginx

4.重装 nginx,docker-compose build nginx

5.启动 docker-compose up -d nginx

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

添加 nginx 容器

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

1.查看 nginx 镜像 ID,docker iamges

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

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

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

5.安装 vim,apk add vim

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

阅读剩余部分

相关阅读 >>

使用nginx如何部署静态资源

linux如何查看nginx是否启动

docker隔离特性依赖哪个内核特性

nginx和apache的区别

怎么访问docker内的mysql

linux环境下如何安装docker

docker有什么用

traefik和nginx区别

docker如何设置http代理

为什么会出现nginx

更多相关阅读请进入《nginx》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...