玩转 docker 入门(4) docker 通过nginx实现反向代理 配置多域名以及多端口号
一、前言 这段时间一直在研究docker的部署及相关开发环境、生产环境的搭建。但最终技术的学习就是用来实际使用的,所以就想将单位中的机房逐步从单机安装环境过渡到通过docker部署多个开发环境(生产环境)。 二、需求 单位机房的IP有限,我们都是通过“IP:端口”的形式来访问的。这样带来一个弊端就是每次部署一个新的开发环境,都需要在防火墙里部署相应的NA...
一、前言
这段时间一直在研究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
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这篇文章,特此表示感谢!
更多推荐
所有评论(0)