You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理Apache访问子路径返回404 Not Found如何解决

问题根因

返回的404响应来自后端Apache服务,说明Nginx与后端服务的网络连通性正常,故障核心是反向代理路径转发规则和后端服务部署路径不匹配:
当前Nginx配置会把匹配到的请求路径完整透传给后端,也就是访问domain.com/something时,后端Apache实际收到的请求地址是http://xxx.xxx.xxx.xxx:8080/something。但你直接访问domain.com:8080能正常打开,说明后端服务实际部署在8080端口的根路径下,根目录下不存在/something对应的资源,因此返回404。

排查步骤
  • 本地验证后端路径响应:在部署Nginx的服务器上执行curl http://xxx.xxx.xxx.xxx:8080/something,如果同样返回题中的404报错,即可确认是请求路径转发错误,和Nginx服务本身无关。
  • 检查proxy_pass配置格式:当前配置中proxy_pass地址末尾未加斜杠,属于全路径透传模式,是触发路径转发错误的直接原因。
  • 配置修改后先做语法校验:每次调整Nginx配置后,先执行nginx -t确认无语法错误,再执行重载操作,避免引发服务中断。
解决方案

根据实际部署场景二选一即可:

场景1:需要将/something前缀的请求映射到后端根路径

即访问domain.com/something/xxx时,实际请求后端的/xxx资源,修改Nginx配置如下:

server {
  listen 80;

  location /something/ {
      proxy_pass http://xxx.xxx.xxx.xxx:8080/;
      # 补充反向代理通用请求头,避免后端无法获取真实客户端信息
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

注意:location路径末尾建议同步加斜杠,避免误匹配/somethingtest这类非预期路径
配置修改完成后执行systemctl reload nginx重载生效即可。

场景2:后端服务本身计划部署在/something路径下

无需调整Nginx转发规则,直接修改后端Apache的站点配置,为8080端口的服务新增/something路径的目录映射或站点别名,确保后端自身可以正常响应该路径的请求即可。

内容的提问来源于stack exchange,提问作者filran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:21:14