配置proxy_pass模块后Nginx报错404的解决方法,解决Nginx 配置 proxy_pass 后 返回404问题,但是请求响应就是404.当我们是这个的设置的时候,当第一层 Nginx(Nginx1)代理后,我们请求的域名是 www.codepub.com ,从这个请求的 header 获取到的 host 的值是 www.codepub.com, 我们通过 配置目录
- 一、 Nginx 配置 proxy_pass 后 返回404问题 故障解决和定位
- 1.1、 问题
- 1.2、 寻找问题原因
- 1.3、 proxy_set_header 官方信息
- 二、扩展 常用的配置
- 1. $proxy_host
- 2. $host
- 4. $http_host
一、 Nginx 配置 proxy_pass 后 返回404问题 故障解决和定位
1.1、 问题在一次生产涉及多次转发的配置中,需求是下面的图:
在配置好了 proxy_pass 之后,请求 www.djx.com 直接返回 404,没有什么其他的异常 。但是我们直接请求后端 www.baidu.com 是正常响应的 。这就很怪异的 。看日志请求也是转发到了 www.baidu.com 的 。但是请求响应就是404.
1.2、 寻找问题原因我们的默认的 Nginx的
proxy_set_header
配置是proxy_set_header Host $host;
- 服务端: 192.168.2.189
- 服务端1:192.168.1.180 Nginx1
- 服务端2:192.168.1.90 Nginx2
当我们是这个的设置的时候,当第一层 Nginx(Nginx1)代理后,我们请求的域名是 www.djx.com ,从这个请求的 header 获取到的 host 的值是
www.djx.com
, 我们通过 配置proxy_set_header Host $host;将 host 的值设置为转发 的Host 值,但是请求的域名是
www.baidu.com
, 也就是 header 里面的是 host 字段是 www.djx.com , 请求的域名和 header 里面的 Host 的不一致导致的 。【配置proxy_pass模块后Nginx报错404的解决方法,解决Nginx 配置 proxy_pass 后 返回404问题】
1.3、 proxy_set_header 官方信息官方文档
默认设置为
proxy_set_header Host $proxy_host;proxy_set_header Connection close;1.4、 解决办法
Host 的值设置为
$proxy_host
, $proxy_host
的值详解见下面扩展 。proxy_set_header Host $proxy_host;
二、扩展 常用的配置
1. $proxy_hostproxy_set_header Host$proxy_host; # 默认配置# 顾名思义,请求头设置的为代理后的域名 。示例1:
当我们配置了 upstream,那么$proxy_host 的值就是 upstream 的名字
upstream open-hz8443{server 10.60.6.184:8000 max_fails=1 fail_timeout=3s weight=10;}那么这里 $proxy_host 的值就是 open-hz8443 。
示例2:
当我们没有配置 upstream,那么 $proxy_host 的值就是
proxy_pass
后面的地址ip和端口. 10.60.6.184:8000
. 如果是 proxy_pass http://www.djx.com:8000;
那么 $proxy_host 的值就是 www.djx.com:8000
.location ^~ /wss/v1{ proxy_pass http://10.60.6.184:8000; proxy_set_header Host $proxy_host; proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade; tcp_nodelay on;}
2. $hostproxy_set_header Host$host;# 当字段不在请求头中就无法传递了,在这种情况下,可通过设置Host变量,将需传递值赋给Host变量当请求 Header 里 Host 无值的时候,直接拿 server_name 的值进行填充 。
当请求 Header 里 Host 的值的时候,就直接拿 请求 Header 里面的 Host 的值 。
3. $host:$proxy_port
推荐阅读
- Tomcat服务在Nginx的负载均衡安装设置教程方法,Nginx负载均衡以及动静分离的原理与配置
- 黑莓passport 什么值得买
- 如何评价黑莓 Passport 手机
- 三星和苹果哪个好
- 魅族pro7 plus参数配置 Plus参数图片
- nginx内proxy_pass模块使用教程,nginx中proxy_pass各种用法详解
- 安装tomcat后可能出现的问题介绍,tomcat服务的配置教程方法
- 华为交换机查看配置的命令是什么?
- 荣耀9和mate9配置其实差不多,为什么mate9比荣耀9贵那么多?
- 作为Moto E5 Plus的继任者,E6 Plus新机有望采用怎样的配置?