在Ubuntu内网环境中为Gogs配置HTTPS访问(通过Apache反向代理使用IP地址)

一、准备工作

  1. 确保已安装Gogs并运行在HTTP模式(默认端口3000)

  2. 确认服务器内网IP地址(如192.168.1.100)

二、安装Apache和必要模块

复制代码
sudo apt update
sudo apt install apache2 -y
sudo a2enmod ssl proxy proxy_http rewrite headers

三、创建SSL证书

1. 创建证书存储目录

复制代码
sudo mkdir -p /etc/apache2/ssl/gogs
sudo chmod 700 /etc/apache2/ssl

2. 生成自签名证书(使用IP地址)

复制代码
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
    -keyout /etc/apache2/ssl/gogs/gogs.key \
    -out /etc/apache2/ssl/gogs/gogs.crt \
    -subj "/CN=192.168.1.100" -addext "subjectAltName=IP:192.168.1.100"

请将192.168.1.100替换为你的实际内网IP地址

四、配置Apache虚拟主机

1. 创建IP访问专用配置文件

复制代码
sudo nano /etc/apache2/sites-available/gogs-ip-ssl.conf

2. 添加以下配置内容

复制代码
<VirtualHost *:80>
    ServerName 192.168.1.100
    Redirect permanent / https://192.168.1.100/
</VirtualHost>

<VirtualHost *:443>
    ServerName 192.168.1.100
    
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/gogs/gogs.crt
    SSLCertificateKeyFile /etc/apache2/ssl/gogs/gogs.key
    
    # 安全配置
    SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite HIGH:!aNULL:!MD5
    SSLHonorCipherOrder on
    
    # 反向代理配置
    ProxyPreserveHost On
    ProxyRequests off
    ProxyPass / http://localhost:3000/
    ProxyPassReverse / http://localhost:3000/
    
    # 传递HTTPS信息
    RequestHeader set X-Forwarded-Proto "https"
    
    # 提高上传限制(50MB)
    LimitRequestBody 52428800
    
    # 日志配置
    ErrorLog ${APACHE_LOG_DIR}/gogs-error.log
    CustomLog ${APACHE_LOG_DIR}/gogs-access.log combined
    
    # WebSocket支持
    RewriteEngine on
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteCond %{HTTP:Connection} upgrade [NC]
    RewriteRule ^/?(.*) "ws://localhost:3000/$1" [P,L]
</VirtualHost>

3. 启用配置并重启Apache

复制代码
sudo a2ensite gogs-ip-ssl
sudo systemctl restart apache2

五、配置Gogs

1. 编辑Gogs配置文件

复制代码
sudo nano /home/git/gogs/custom/conf/app.ini

2. 修改以下配置项

复制代码
[server]
DOMAIN           = 192.168.1.100
HTTP_PORT        = 3000
ROOT_URL         = https://192.168.1.100/
PROTOCOL         = http

3. 重启Gogs服务

复制代码
sudo systemctl restart gogs

六、防火墙配置

复制代码
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

七、访问测试

  1. 在浏览器访问 https://192.168.1.100

  2. 首次访问需要接受安全警告(因为是自签名证书)

八、解决IP地址SSL证书警告

方案1:在客户端临时禁用 SSL 验证(仅测试环境)
复制代码
git -c http.sslVerify=false clone https://192.168.28.130/root/project1.git
方案2:在客户端永久禁用 SSL 验证(不推荐生产环境)
复制代码
git config --global http.sslVerify false
方案3:将证书添加到 Git 信任列表(推荐)
  1. 导出证书(在服务器上执行)

sudo cp /etc/apache2/ssl/gogs/gogs.crt /tmp/

sudo chmod 644 /tmp/gogs.crt

  1. 将证书文件gogs.crt分发到客户端机器

  2. 在各客户端操作系统中导入证书为受信任的根证书

九、注意事项

  1. 如果服务器IP变更,需要重新生成证书并更新所有配置

  2. 建议在内网DNS服务器中添加解析记录,方便记忆

  3. 生产环境建议使用域名而非IP地址

十、验证配置

复制代码
# 检查Apache是否监听443端口
sudo netstat -tulnp | grep apache

# 检查Gogs是否运行
sudo systemctl status gogs

# 检查HTTPS访问日志
sudo tail -f /var/log/apache2/gogs-access.log

此配置方案专为内网IP访问设计,无需域名解析,适合纯内网环境使用。

相关推荐
2601_961845421 小时前
法考真题及答案解析|历年真题|资料已整理
linux·windows·ubuntu·macos·centos·gnu
Geek_Vison10 小时前
APP集成了50多个小程序后,如何搭建一个小程序管理平台来管理这些小程序~
小程序·uni-app·apache·mpaas·小程序容器
zzqssliu10 小时前
Next.js图片自适应压缩:跨境站点图片加载提速代码方案
linux·javascript·ubuntu
干掉乔治的猪11 小时前
【如何恢复 Ubuntu 引导分区:Windows11 + Ubuntu22.04 双系统 GRUB 修复踩坑记录】
linux·ubuntu·grub·修复·双系统
大神157311 小时前
Jetty 6 HTTPS 配置指南
网络协议·https·jetty
l齐天11 小时前
Ubuntu 中编译 Go + PBC 程序为 Windows 11 可运行文件
windows·ubuntu·golang
解决问题no解决代码问题11 小时前
漏洞详解|CVE-2026-44825 Apache Solr 隐藏默认账号漏洞(附检测+修复全套方案)
apache·solr·lucene
biubiubiu070612 小时前
Ubuntu中3种定时任务
数据库·ubuntu·postgresql
BBWEYY终身尊贵会员21 小时前
教培小机构小程序开发:从技术选型、系统架构到表结构与接口设计的完整实践
apache
星间都市山脉1 天前
Android STS(Security Test Suite)完整介绍与测试流程
android·java·linux·windows·ubuntu·android studio·androidx