需求:例如 本地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的端口冲突。

另:用Nginx做端口转发(反向代理

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐