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

Nginx反向代理Gitea失效,访问域名仍显示默认页面求助

反向代理失效排查与修复

核心问题分析

你的Nginx配置存在两个关键错误,导致访问git.domain.com时匹配到了默认的default.conf:

  1. 监听端口不匹配
    访问git.domain.com默认走HTTP 80端口,但你的git.domain.com.conf里的server块只监听2222和4000端口,Nginx收到80端口的请求时,找不到对应server块,就会 fallback到默认的default.conf。

  2. Proxy目标可能错误
    你用http://xxx.xxx.xxx.xxx:4000作为代理目标,如果Gitea是和Nginx同主机的Docker容器,直接用外部IP可能存在网络连通问题(比如容器端口映射的是主机4000,但容器内部网络可能无法通过外部IP访问自己)。


修复步骤

1. 修改git.domain.com.conf的监听端口

将server块的监听端口改为80(HTTP默认端口),这样Nginx才能匹配到git.domain.com的请求:

server {
  listen 80;
  listen [::]:80;
  server_name git.domain.com;

  location / {
        proxy_pass http://gitea-container-name:3000; # 替换为Gitea容器名或内部IP,默认Gitea容器端口是3000
        client_max_body_size 512M;
        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;
  }
}

注意:Gitea容器内部默认端口是3000,如果你映射主机4000端口到容器3000,那代理目标应该用容器内部的3000端口(通过容器名或Docker网络IP访问),而不是主机的4000端口。

2. 确保Nginx加载配置文件

  • 确认git.domain.com.conf放在Nginx容器的/etc/nginx/conf.d/目录下(这是Nginx默认加载额外配置的目录)。
  • 重启Nginx容器使配置生效:
docker restart nginx-container-name

3. 验证容器网络连通性

如果用容器名作为代理目标,需要确保Nginx和Gitea容器在同一个Docker网络中:

  • 查看容器所属网络:
docker inspect nginx-container-name | grep Networks
docker inspect gitea-container-name | grep Networks
  • 如果不在同一网络,创建并加入网络:
docker network create git-proxy-net
docker network connect git-proxy-net nginx-container-name
docker network connect git-proxy-net gitea-container-name

4. 验证DNS解析

确保git.domain.com已经正确解析到你的服务器公网IP,可以用nslookup git.domain.com或ping git.domain.com验证。


测试验证

修改配置并重启Nginx后,访问git.domain.com,应该能正常跳转到Gitea页面。如果还是有问题,可以查看Nginx日志排查:

docker logs nginx-container-name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:05:03