nginx反向代理实现不同域名映射到同一台服务器的80端口

前因:原本两个项目放在两台服务器,域名映射在不通外网ip的80端口。因为预算问题,现在要把两个不同项目放到同一台服务器,都通过域名直接访问(相当于是80端口)。这两个项目都是javaweb的项目

前置准备工作-->启动两个服务

两个域名需要先解析到同一个外网服务ip上

本次需求涉及的项目一台是纯网页不需要tomcat服务启动,另一台需要tomcat启动。如果都是tomcat服务只要放在不同的端口下启动就好了。按照我的实际需求需要一个tomcat服务,两个nginx服务,一台nginx用作启动纯网页服务,一台nginx用作核心的方向代理。

我这里是将纯网页的项目直接放到nginx的html包中将nginx监听地址改为8009。(因为服务启动在8009端口),nginx配置只需要将原始的80端口改成8009,直接启动nginx即可。

 

另一台服务器直接放在tomcat中启动,启动在8008端口。

核心工作-->配置nginx

核心的nginx配置如下:

nginx反向代理实现不同域名映射到同一台服务器的80端口

核心nginx监听80端口,server_name为其中一个服务对应的域名。其中包含的reverse_proxy.conf配置如下:

nginx反向代理实现不同域名映射到同一台服务器的80端口

这两个server监听的都是80端口,因为域名直接访问默认的是80端口。这边的代理会根据访问的实际域名进行相应的内网转发,不同的域名转发到不同的内网端口上。

此时,两个域名解析的ip是同一台服务器,当访问不同的域名时,会通过代理转到不同的服务。

这样一来通过nginx方向代理实现不同域名共享80端口就实现啦!

nginx反向代理实现不同域名映射到同一台服务器的80端口