玩转 docker 入门(4) docker 通过nginx实现反向代理 配置多域名以及多端口号

一、前言

这段时间一直在研究docker的部署及相关开发环境、生产环境的搭建。但最终技术的学习就是用来实际使用的,所以就想将单位中的机房逐步从单机安装环境过渡到通过docker部署多个开发环境(生产环境)。

二、需求

单位机房的IP有限,我们都是通过“IP:端口”的形式来访问的。这样带来一个弊端就是每次部署一个新的开发环境,都需要在防火墙里部署相应的NAT(有次部署完NAT后没有保存,在临时断电后丢失了很多的NAT设置)。

这次我的设想是将我们公司的一个(或多个)二级域名绑定在机房ip上,并在路由器中设置80端口转发到我们已经部署docker的这台服务器上(假设是10.10.10.10),并通过nginx服务器的反向代理实现访问二级域名即可直接进入相应服务器(或docker容器)中的开发环境。

三、docker和nginx的安装部署

1. 安装docker

具体参见之前的文章,按步骤进行操作即可完成docker-io的安装。

1) 玩转 docker 入门(1) docker 在 CentOS 7.4 的安装部署

2) 玩转 docker 入门(2) docker-io 在 CentOS 7.4 的基本使用流程

3) 玩转 docker 入门(3) docker 的常用命令 解析

2. 获取 nginx 镜像

docker search nginx

玩转 docker 入门(4) docker 通过nginx实现反向代理 配置多域名以及多端口号插图

3. 下载 nginx 镜像

docker pull nginx

4. 创建并启动nginx容器

docker run –name=nginx -p 80:80 -v /nginx/conf.d:/etc/nginx/conf.d -d nginx

这样,我们已经创建了一下名字为nginx的容器,该容器中/etc/nginx/conf.d目录下的文件将与宿主机中/nginx/conf.d目录下的文件保持同步。目录/etc/nginx/conf.d是nginx的站点配置文件夹,下面每一个conf配置文件各自对应一个站点。同样,nginx反向代理的配置也得写在里面。

四、配置nginx的反向代理

到了这一步,nginx的容易已经创建完毕,我们接下来修改对应的配置文件。我在前言中讲过了我们公司机房的独特点,如果你们没有这种情况,可以将1,2,3这几步省略掉。

1. 将域名(假设为laoliu.ltd)解析到机房对应的IP上,并在防火墙里设置对应的NAT,将机房IP的80端口指向10.10.10.10 的80端口上。

2. 10.10.10.10这台服务器已经在本文的第三步中安装完了nginx,接下来进入/nginx/conf.d目录,新增一个laoliu.ltd.conf文件,并将下文代码中的内容粘贴进去。(保存并退出,要按ESC并输入:wq)

cd /nginx/conf.d vi laoliu.ltd.conf
server { listen 80; server_name laoliu.ltd; # 要解析进来域名 location / { proxy_pass http://10.10.10.10:80; #宿主机ip:容器对外的端口号 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }

3. 如果你需要多个域名的配置,只需要在/nginx/conf.d目录下加相应的配置文件即可,一般只需要修改server_name和proxy_pass即可。

4. 重启nginx容器。

五、最后一步,重启容器

docker restart nginx

六、后记

1. 打开域名即可看到效果。

2. 这只是一个初步的设想(所以我在标题里写了“入门”),大家可以发挥想象力,想出更多的运维部署方案。

3. 有什么事情欢迎沟通交流,我的微信二维码放在下面了,请大家在加的时候做下备注,谢谢!

4. 感谢网络上那些大神,本文在撰写的时候参考了https://www.jianshu.com/p/6b317192480c这篇文章,特此表示感谢!

玩转 docker 入门(4) docker 通过nginx实现反向代理 配置多域名以及多端口号插图1

原文链接:https://blog.csdn.net/a33130317/article/details/80941210

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享