一、準備工作
-
確保已安裝Gogs并運行在HTTP模式(默認端口3000)
-
確認服務器內網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.100Redirect permanent / https://192.168.1.100/ </VirtualHost><VirtualHost *:443>ServerName 192.168.1.100SSLEngine onSSLCertificateFile /etc/apache2/ssl/gogs/gogs.crtSSLCertificateKeyFile /etc/apache2/ssl/gogs/gogs.key# 安全配置SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1SSLCipherSuite HIGH:!aNULL:!MD5SSLHonorCipherOrder on# 反向代理配置ProxyPreserveHost OnProxyRequests offProxyPass / http://localhost:3000/ProxyPassReverse / http://localhost:3000/# 傳遞HTTPS信息RequestHeader set X-Forwarded-Proto "https"# 提高上傳限制(50MB)LimitRequestBody 52428800# 日志配置ErrorLog ${APACHE_LOG_DIR}/gogs-error.logCustomLog ${APACHE_LOG_DIR}/gogs-access.log combined# WebSocket支持RewriteEngine onRewriteCond %{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
七、訪問測試
-
在瀏覽器訪問?
https://192.168.1.100
-
首次訪問需要接受安全警告(因為是自簽名證書)
八、解決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
? ? 2. 將證書文件gogs.crt分發到客戶端機器
? ? 3. 在各客戶端操作系統中導入證書為受信任的根證書
九、注意事項
-
如果服務器IP變更,需要重新生成證書并更新所有配置
-
建議在內網DNS服務器中添加解析記錄,方便記憶
-
生產環境建議使用域名而非IP地址
十、驗證配置
# 檢查Apache是否監聽443端口 sudo netstat -tulnp | grep apache# 檢查Gogs是否運行 sudo systemctl status gogs# 檢查HTTPS訪問日志 sudo tail -f /var/log/apache2/gogs-access.log
此配置方案專為內網IP訪問設計,無需域名解析,適合純內網環境使用。