Gitea HTTPS 反向代理配置

1. 环境信息

项目 值
服务器 IP . ..
Nginx 版本 1.27.0
Nginx 配置文件 /usr/local/nginx/webserver/nginx/conf/nginx.conf
Gitea 监听端口 127.0.0.1:3000
Gitea 配置文件 /etc/gitea/app.ini
SSL 证书路径 /home/work/ssl/xinyultd.dpdns.org/xinyultd.dpdns.org_bundle.crt
SSL 密钥路径 /home/work/ssl/xinyultd.dpdns.org/xinyultd.dpdns.org.key
SSL 证书绑定域名 xinyultd.dpdns.org

2. Nginx 配置(443 Server Block)

在 nginx.conf 的 443 ssl server 块中添加以下 location:

nginx 复制代码
server {
    listen       443 ssl;
    server_name  *.*.*.* ;

    ssl_certificate      /home/work/ssl/org_bundle.crt;
    ssl_certificate_key  /home/work/ssl/org.key;
    ssl_protocols        TLSv1.2 TLSv1.3;

    # Gitea 反向代理
    location /gitea/ {
        proxy_pass http://127.0.0.1:3000/;
        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;
        client_max_body_size 512M;
    }

    # 文档目录(本页面)
    location /doc/ {
        alias /usr/local/nginx/webserver/nginx/html/doc/;
        index index.md;
    }
}

⚠️ 关键说明:

  • proxy_pass http://127.0.0.1:3000/; 末尾的 / 表示将 /gitea/ 前缀剥离后再转发给 Gitea
  • X-Forwarded-Proto $scheme 确保 Gitea 知道外部使用的是 HTTPS
  • client_max_body_size 512M 允许上传较大的 Git 仓库文件

3. Gitea 配置(app.ini)

修改 /etc/gitea/app.ini 中的 [server] 段:

ini 复制代码
[server]
ROOT_URL = https://*.*.*.* /gitea/
HTTP_PORT = 3000
PROTOCOL  = http

⚠️ ROOT_URL 注意事项:

  • 必须以 https:// 开头,与外部访问协议一致
  • 必须包含子路径 /gitea/,且以 / 结尾
  • 修改后需重启 Gitea:systemctl restart gitea

4. 操作步骤总结

bash 复制代码
# 1. 备份原始配置
cp /etc/gitea/app.ini /etc/gitea/app.ini.bak.$(date +%Y%m%d)
cp /usr/local/nginx/webserver/nginx/conf/nginx.conf \
   /usr/local/nginx/webserver/nginx/conf/nginx.conf.bak.$(date +%Y%m%d)

# 2. 修改 Gitea ROOT_URL(如上第3节所示)
vi /etc/gitea/app.ini

# 3. 重启 Gitea
systemctl restart gitea

# 4. 确认 Nginx 443 server block 包含 /gitea/ location(如上第2节所示)
vi /usr/local/nginx/webserver/nginx/conf/nginx.conf

# 5. 测试 Nginx 配置并重载
/usr/local/nginx/webserver/nginx/sbin/nginx -t
/usr/local/nginx/webserver/nginx/sbin/nginx -s reload

# 6. 验证访问
curl -kI https://*.*.*.* /gitea/

相关推荐
量子物理学1 小时前
oracle plsql instantclient 安装
数据库·oracle
草莓熊Lotso1 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
ClickHouseDB9 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_6399069410 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺11 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw11 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社12 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙12 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain37613 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis