Loading... ```markdown # 内网 Gitea 使用 FRP + Nginx + HTTPS 实现公网访问 > 本教程将演示如何将部署在内网的 Gitea 通过 `FRP + Nginx + HTTPS` 安全暴露到公网,支持浏览器安全访问 `https://git.demo123.site`。 --- ## 🧰 环境准备 - 内网一台机器:已安装 Gitea - 公网一台服务器:可用作反向代理和 FRP Server - 一个域名,例如:`git.demo123.site`,已解析到公网服务器 - 通过腾讯云或阿里云申请的有效 SSL 证书(推荐使用免费证书) - **内网和公网机器使用相同版本的 [FRP](https://github.com/fatedier/frp)** --- ## 📥 下载并安装 FRP(公网服务器和内网机器都要安装) 以下示例使用 `v0.58.0` 版本,请根据你的系统架构下载: ```bash # 下载 wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz # 解压 tar -zxvf frp_0.58.0_linux_amd64.tar.gz cd frp_0.58.0_linux_amd64 ``` > ⚠️ 两台机器必须使用相同版本,否则将无法连接。 --- ## 🖥️ 公网服务器配置(FRPS + Nginx) ### 1. 配置 FRP Server 创建配置文件 `frps.toml`: ```toml [common] bind_port = 7000 token = your-secure-token vhost_http_port = 8088 vhost_https_port = 8443 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = strongpass123 log_file = /var/log/frps.log log_level = info log_max_days = 7 ``` 运行: ```bash ./frps -c frps.toml & ``` 检查端口是否监听: ```bash ss -lntp | grep -E '7000|8088|8443' ``` --- ### 2. 配置 Nginx(用于转发 HTTPS 请求) #### 证书路径假设如下: ```bash # 假设证书文件来自腾讯云 /etc/nginx/ssl/git.demo123.site_bundle.pem /etc/nginx/ssl/git.demo123.site.key ``` #### 配置文件 `/etc/nginx/conf.d/git.demo123.site.conf`: ```nginx server { listen 80; server_name git.demo123.site; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name git.demo123.site; ssl_certificate /etc/nginx/ssl/git.demo123.site_bundle.pem; ssl_certificate_key /etc/nginx/ssl/git.demo123.site.key; location / { proxy_pass https://127.0.0.1:8443; proxy_ssl_verify off; # 如果你没有验证后端 frps 的证书,可以关闭验证 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: ```bash nginx -t && nginx -s reload ``` --- ## 🏠 内网机器配置(FRP Client) 创建配置文件 `frpc.toml`: ```toml [common] server_addr = git.demo123.site server_port = 7000 token = your-secure-token [gitea] type = https local_ip = 127.0.0.1 local_port = 3000 # 如果你的 Gitea 是默认端口 custom_domains = git.demo123.site ``` > 📌 如果 Gitea 的端口不是默认的,请改成你实际的端口,例如 83。 运行: ```bash ./frpc -c frpc.toml & ``` --- ## ✅ 访问验证 在浏览器中访问: ``` https://git.demo123.site ``` * 🔒 显示安全锁 * 🎉 成功访问内网 Gitea 项目页 --- ## 🛠 常见问题排查 | 问题 | 排查方向 | | ------------------------ | ---------------------------------------------------------- | | 502 Bad Gateway | 检查 Gitea 是否运行、FRPC 是否连上 FRPS、端口是否配置一致 | | SSL 证书无效或不安全提示 | 检查是否是通过 HTTPS 访问、域名是否正确 | | 样式错乱或重定向错误 | 建议 Gitea 使用公网域名访问(或配置 ROOT\_URL) | | http2 报错 | 重新编译 Nginx 加入`ngx_http_v2_module`,或去掉`http2`参数 | --- 最后修改:2025 年 05 月 22 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏