请求返回 404 错误,可能确实与 host
头有关,也有可能是后端服务器本身的资源路径问题。
错误示例:
location /jx3/ { rewrite ^/jx3/(.*)$ /$1 break; proxy_pass https://jx3.top; 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_set_header x-forwarded-proto $scheme; }
1.host 头设置问题:
在你当前的配置中,proxy_set_header host $host;
会将客户端的原始主机名(假如是jx.ieoog.com
)传递给后端服务器。这可能会导致后端服务器无法正确解析请求,尤其是如果后端服务器依赖 host
头来确定处理逻辑或域名解析时。
例如,如果后端服务器 https://jx3.top
需要 host
头为它自己的域名(即 jx3.top
),那么将 host
设置为 jx.ieoog.com
可能会导致 404 错误,因为服务器接收到的是一个它无法识别的域名。
解决方法:
试试将 proxy_set_header host
改为:
proxy_set_header host jx.top;
这样,后端服务器会接收到正确的 host
头信息(即 jx.top
),从而能够正确处理请求。
2. 后端资源路径问题:
如果 host
头设置正确,仍然返回 404,可能是后端服务器 https://jx3api.btcsg.top
上并不存在 /user/token
这个路径。可以通过直接访问 https://jx3api.btcsg.top/user/token
来验证该路径是否存在。
解决方法:
检查后端服务器是否期望请求路径格式发生改变。例如,如果后端服务器需要保留 /jx3/
前缀,可以修改重写规则或直接在 proxy_pass
中保留 /jx3/
,比如:
proxy_pass https://jx3.top/jx3/;
这样,访问 https://jx.ieoog.com/jx3/us/tn
时会被代理为 https://jx3api.btc.top/jx3/us/tn
。
到此这篇关于nginx配置后请求报404的几种问题解决方法的文章就介绍到这了,更多相关nginx配置后请求报404内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论