需求:例如 本地192.168.0.1搭建了gitlab和jenkins,分别需要用gitlab.com和jenkins.com访问,gitlab为80端口,Jenkins为8088端口,需要怎么实现呢?
如果在本地/etc/hosts写入 192.168.0.1 gitlab.com
只能配置gitlab 的解析,无法同时实现gitlab和jenkins在本地用不同域名不同端口的需求。
这就需要使用到nginx 的端口转发功能了
1.新建一台server2 (192.168.0.2)安装好nginx
写入:
server{
listen 80;
server_name jenkins.com
index index.html index.htm
location / {
proxy_pass http://192.168.0.1:8088;
}
}
##当对方访问jenkins.com时,跳转到server1的8088端口
server{
listen 80;
server_name gitlab.com
index index.html index.htm
location / {
proxy_pass http://192.168.0.1:80;
}
}
##当对方访问gitlab.com时,跳转到server1的80端口
配置好之后重启nginx
systemctl restart nginx
2.编辑server1的本地解析文件,将域名解析到server2的ip
vim /etc/hosts
写入:
192.168.0.2 gitlab.com
192.168.0.2 jenkins.com
配置完毕
这样就可以在server1的浏览器上访问gitlab.com和jenkins.com了
当你在server1上访问gitlab.com时, 本地解析会将这个域名解析成192.168.0.2,也就是server2的ip,然后server2的nginx又会将请求转发到192.168.0.1:80,也就是server1的80端口上,这样就可以通过域名访问自己部署的多个服务了。
为什么不在server1本地部署nginx直接访问呢?因为gitlab和Jenkins已经占用了80端口和8088端口,端口会和nginx的端口冲突。