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

Docker Nginx反向代理配置后出现HTTPD 404响应问题求助

Nginx反向代理路径问题解决方法

问题根源

当Nginx匹配location /preklad处理请求时,默认会把完整的URI(包括/preklad前缀)转发给后端HTTPD服务。比如访问http://localhost/preklad,实际转发到HTTPD的请求是http://translation_web:80/preklad,但你的HTTPD服务根目录下并没有/preklad这个路径,因此返回404。

修复方案

修改Nginx的proxy_pass配置,在目标地址末尾加上/。这样Nginx会自动剔除/preklad前缀,把请求转发到HTTPD的根路径(即http://translation_web:80/)。

修改后的Nginx配置

server {
    listen 80;
    server_name localhost;
    location /preklad {
        proxy_pass http://translation_web:80/;
        proxy_set_header Host $http_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. 重新启动Nginx容器,加载新配置:
    docker-compose up -d --force-recreate proxy
    
  2. 在浏览器访问http://localhost/preklad,此时应该能正常返回HTTPD的网站内容。
  3. 如果你的TS应用包含静态资源(如JS、CSS文件),需确保资源路径使用相对路径,或者补充Nginx规则适配。比如资源路径是/js/app.js,可以添加:
    location /js {
        proxy_pass http://translation_web:80/js/;
    }
    

额外说明

  • Docker Compose默认会为所有服务创建共享网络,Nginx容器通过服务名translation_web访问HTTPD容器的配置是正确的,这部分无需修改。
  • 之前在Nginx容器内curlhttp://translation_web:80正常,是因为直接访问了HTTPD根路径,和转发时的路径差异才导致了问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:39:59