Nginx配置后请求报404的解决思路
侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计收到 8 条评论

Nginx配置后请求报404的解决思路

Aoki
2024-10-16 / 0 评论 / 48 阅读 / 正在检测是否收录...

请求返回 404 错误,可能确实与 Host 头有关,也有可能是后端服务器本身的资源路径问题。

错误示例:

location /jx3/ {
    rewrite ^/jx3/(.*)$ /$1 break;
    proxy_pass https://jx3api.btcsg.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

0

评论 (0)

取消