Nginx通过反向代理:实现解析多个记录或多个域名解析到同一台服务器上的不同服务

实现原理让Nginx主要监听80端口Nginx再根据server_name(即哪个解析记录访问)的情况通过反向代理再转发到对应的服务上

实现代码

server { listen 80; #监听80端口 server_name server1.xnb.com;解析A记录server1 location /{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass :2000; #第一个服务的端口 } } server { listen 80; server_name server2.xnb.com; #解析A记录server2 location /{ proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass :2001; #第二个服务的端口 } }

服务器配置

将server1、server2记录添加到域名解析记录中,解析指向服务器IP。确保服务器防火墙开启了80端口。注意这里由于都是方向代理操作,因此上述代码中的2000和2001端口无需开启。

静态资源没有端口号怎么配置或许有更好的解决办法,但我的解决办法是:没有端口号就映射个端口号出来。

server { listen 2002; # 监听的端口号 server_name SHOU-Ministry; # 貌似随便取都行 root /root/SHOU-Ministry; # 资源的绝对路径(不要加index.html) index index.html; # 首页 }