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

子域名下Nginx部署Gogs无法正常访问问题求助

我之前在OpenMediaVault上折腾Gogs+Nginx反向代理的时候,也踩过和你一样的坑——明明配置了Nginx,子域名就是访问不了。给你梳理下我当时排查和解决的步骤,应该能帮你搞定:

1. 先确认子域名能解析到OMV服务器

这是很多人忽略的第一步:不管是用局域网DNS服务器(比如路由器里设置域名映射),还是在本地机器的hosts文件里添加条目,必须确保git.domainname或gogs.domainname能指向你的OMV服务器局域网IP。

  • 测试方法:在本地终端输入 ping git.domainname,如果返回的IP不是你的OMV服务器,先把这个问题解决——DNS解析不对的话,Nginx根本接不到请求。
2. 修正Nginx反向代理配置

你提到已经在sites-available里加了配置并软链到sites-enabled,但大概率是配置细节没做对。把你的配置替换成标准的反向代理配置试试:

  1. 创建/编辑Nginx配置文件:sudo nano /etc/nginx/sites-available/gogs
  2. 粘贴以下内容(注意替换成你的子域名):
server {
    listen 80;
    server_name git.domainname gogs.domainname; # 同时支持两个子域名,按需修改

    location / {
        proxy_pass http://127.0.0.1:3000;
        # 这些Header配置很重要,不然Gogs获取不到正确的请求信息
        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. 重新建立软链(如果之前的软链有问题,先删除再重建):
sudo rm -f /etc/nginx/sites-enabled/gogs
sudo ln -s /etc/nginx/sites-available/gogs /etc/nginx/sites-enabled/
3. 验证Nginx配置并重启服务

配置写完后一定要先检查语法,不然重启Nginx会失败:

  • 执行 sudo nginx -t,如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful才继续,否则根据报错信息修正配置(比如括号没闭合、拼写错误)。
  • 重启Nginx:sudo systemctl restart nginx,或者直接在OMV的Web界面「服务」模块里找到Nginx重启。
4. 调整Gogs的基础配置

Gogs需要知道自己的外部访问地址,不然跳转链接、克隆地址都会出问题:

  • 方法一:登录Gogs后台(http://domainname:3000/admin),找到「配置」→「服务器设置」,把「域名」改成git.domainname,「根URL」改成http://git.domainname/,同时把「监听地址」改成127.0.0.1(只让Nginx访问,更安全)。
  • 方法二:直接修改Gogs的配置文件(OMV上如果是原生安装,路径一般是/etc/gogs/app.ini;如果是Docker部署,要找映射出来的配置文件或者进入容器修改),找到[server]段:
DOMAIN           = git.domainname
ROOT_URL         = http://git.domainname/
HTTP_ADDR        = 127.0.0.1
HTTP_PORT        = 3000
  • 重启Gogs服务:sudo systemctl restart gogs(原生安装),或者docker restart gogs(Docker部署)。
5. 排查防火墙与OMV端口限制

OMV默认可能有防火墙规则,要确保80端口在局域网内是开放的:

  • 登录OMV Web界面,进入「防火墙」模块,检查入站规则里是否允许80端口的访问,如果没有就添加一条允许规则。
  • 如果是Docker部署的Gogs,还要确认容器的端口映射是127.0.0.1:3000->3000/tcp,而不是0.0.0.0:3000->3000/tcp(当然0.0.0.0也能工作,但后者会直接暴露Gogs端口,不如只让Nginx访问安全)。

做完这些步骤后,再试试访问http://git.domainname,应该就能正常打开Gogs了。如果还是不行,查看Nginx的日志找线索:

  • 访问日志:sudo tail -f /var/log/nginx/access.log,看有没有来自你本地IP的请求记录。
  • 错误日志:sudo tail -f /var/log/nginx/error.log,看有没有报错信息(比如连接Gogs端口失败、配置错误)。

内容的提问来源于stack exchange,提问作者Roland H.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:44:56