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/前缀剥离后再转发给 GiteaX-Forwarded-Proto $scheme确保 Gitea 知道外部使用的是 HTTPSclient_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/