Nginx-代理后端通过域名访问
⽬录
- 前⾔
- Nginx 根据域名反向代理
- Nginx proxy_pass 关于 '/' 的作⽤
1. 前⾔
接到⼀个需求,通过nginx 代理互联⽹上某⼀个页⾯,刚开始的时候觉得很简单的,直接 proxy_pass 过去就完事了,测试了下还是想太多。具体记录如下。
2. Nginx 根据域名反向代理
web服务器通常有三种访问⽅式:
1. 基于ip
2. 基于域名
3. 基于端⼝
⽽互联⽹上暴露的⽹站多数都是通过基于域名的⽅式,如果直接通过解析后的IP访问,可能就⽆法访问到⽹站信息。我这⾥模拟了下这种⽅式,如下:
nginx部署前端项目
对应关系:
浏览器访问域名:
浏览器访问ip地址:
现在问题来了,当你的 nginx 配置 proxy_pass 的时候,得到的是域名返回的结果还是 ip地址返回的结果呢?这两种返回的结果完全不同。
在另⼀台主机 [ 192.168.118.14 ] 上安装 nginx 并配置好
配置nginx ⽅向代理
通过浏览器访问 192.168.118.14
查看⽇志信息:
192.168.118.41 - - [23/Jul/2019:20:09:12 +0800] "GET / HTTP/1.1" 200 15 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-" "upstream_addr":"112.2.3.66:80"
结合上⾯的反馈,可以得到,当 nginx 反向代理域名,会根据启动时候解析出来的ip,加载到内存中,后⾯不会改变可以绑定hosts或者指定resolve服务器来固定ip
如果在使⽤ nginx 做反向代理的时候遇到以上相同的情况,解决办法是设置⼀个 proxy_set_header
proxy_set_header Host "[domain]";
配置完成,nginx -s reload  浏览器访问:
现在就得到想要的页⾯了。
3. Nginx proxy_pass 关于 '/' 的作⽤有这样⼀个服务器访问如下:
在这台主机前端需要添加⼀个反向代理。配置如下:
第⼀种配置:
总结:
proxy_pass 192.168.118.14/a/  --> 192.168.118.15/
第⼆种配置:
总结:
proxy_pass 192.168.118.14/a  --> 192.168.118.15/
综上所述:
切记以上两条规则。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。