编辑
2025-03-14
Linux
0
请注意,本文编写于 36 天前,最后修改于 36 天前,其中某些信息可能已经过时。

目录

docker部署gitea
nginx配置反向代理
nginx 将gitea反向代理到某个子路径

Gitea是一个安装便捷,轻量级的自建 Git 服务,通过Docker非常容易部署与迁移

本文参考自gitea的文档:https://docs.gitea.com/zh-cn/

docker部署gitea

首先创建一个gitea的文件夹并进入

sh
mkdir gitea-docker cd gitea-docker

随后创建docker-compose.yml文件,并编辑之

sh
touch docker-compose.yml nano docker-compose.yml

编辑docker-compose.yml如下

yml
version: "2" services: server: image: docker.gitea.com/gitea:latest-rootless restart: always volumes: - ./data:/var/lib/gitea - ./config:/etc/gitea - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "2222:2222"

Ctrl+S保存,并按Ctrl+X退出编辑。随后创建两个文件夹configdata

sh
mkdir config data

赋予它们权限

sh
sudo chown 1000:1000 config/ data/

随后,启动容器

sudo docker-compose up -d

nginx配置反向代理

如果将gitea配置到某个域名,应该如此配置nginx

nginx
server { ... location / { client_max_body_size 512M; proxy_pass http://localhost:3000; proxy_set_header Connection $http_connection; proxy_set_header Upgrade $http_upgrade; 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; } }

然后重启nginx

sh
sudo nginx -s relaod

nginx 将gitea反向代理到某个子路径

比如我想把gitea反向代理到gbwater.icu/git,那么首先应当编辑config/app.ini

sh
nano config/app.ini

随后将ROOT_URL配置改为

sh
ROOT_URL = https://gbwater.icu/git/

将nginx配置为

nginx
server { ... location ~ ^/(gitea|v2)($|/) { client_max_body_size 512M; # 确保 nginx 使用未转义 URI, 按原样保持 "%2F"。 确保 nginx 去除 "/gitea" 子路径前缀, 按原样传递 "/v2"。 rewrite ^ $request_uri; rewrite ^(/gitea)?(/.*) $2 break; proxy_pass http://127.0.0.1:3000$uri; # 其他的常规 HTTP 表头,见上面“使用 Nginx 作为反向代理服务”小节的配置 proxy_set_header Connection $http_connection; proxy_set_header Upgrade $http_upgrade; 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与nginx

sh
sudo docker stop gitea-docker-server-1 sudo docker-compose up -d sudo nginx -s reload

这么做是不推荐的,已知的问题是,在本地使用git登录时会跳转到不带/git/的路径

本文作者:GBwater

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!