apache git gogs https转发 HTTP 请求:匹配 /gogs 路径到后端 Gogs 服务
apache gogs https转发 HTTP 请求:匹配 /gogs 路径到后端 Gogs 服务
stevenroc@stevenroc:/opt/openAI $ sudo su – git
stevenroc@stevenroc:/etc/apache2/sites-available $ sudo rsync -av –chown=git:git /home/stevenroc/gogs/ssl/ /home/git/gogs/ssl/
sudo rsync -av –chown=git:git /home/stevenroc/gogs/ssl/ /home/git/gogs/
1、
# 1. 检查当前证书权限
ls -la /home/git/gogs/ssl/
# 2. 修复权限(关键步骤)
git@stevenroc:~/gogs $ sudo chown -R git:git /home/git/gogs/ssl/
git@stevenroc:~/gogs $ chmod 600 /home/git/gogs/ssl/client-key.pem
git@stevenroc:~/gogs $ chmod 644 /home/git/gogs/ssl/ca-cert.pem
git@stevenroc:~/gogs $ chmod 644 /home/git/gogs/ssl/client-cert.pem
git@stevenroc:~/gogs $ ls -la /home/git/gogs/ssl/
total 20
drwxr-xr-x 2 git git 4096 Feb 24 13:16 .
drwxr-xr-x 7 git git 4096 Feb 24 10:16 ..
-rw-r–r– 1 git git 1530 Feb 24 13:03 ca-cert.pem
-rw-r–r– 1 git git 1382 Feb 24 09:58 client-cert.pem
-rw-r–r– 1 git git 1702 Feb 24 09:58 client-key.pem
# 3. 验证修复后权限
ls -la /home/git/gogs/ssl/
# 4. 再次测试连接
mysql -u gogs -p -h 127.0.0.1 –ssl-ca=/home/git/gogs/ssl/ca-cert.pem –ssl-cert=/home/git/gogs/ssl/client-cert.pem –ssl-key=/home/git/gogs/ssl/client-key.pem -e “STATUS;” gogs
1、
git@stevenroc:~/gogs $ ls -la /home/git/gogs/ssl/
total 20
drwxr-xr-x 2 git git 4096 Feb 24 13:16 .
drwxr-xr-x 7 git git 4096 Feb 24 10:16 ..
-rw-r–r– 1 git git 1530 Feb 24 13:03 ca-cert.pem
-rw-r–r– 1 git git 1382 Feb 24 09:58 client-cert.pem
-rw-r–r– 1 git git 1702 Feb 24 09:58 client-key.pem
2、
stevenroc@stevenroc:~ $ mysql -u gogs -p -h 127.0.0.1 –ssl-ca=/home/git/gogs/ssl/ca-cert.pem –ssl-cert=/home/git/gogs/ssl/client-cert.pem –ssl-key=/home/git/gogs/ssl/client-key.pem -e “STATUS;” gogs
Enter password:
————–
mysql Ver 15.1 Distrib 10.11.14-MariaDB, for debian-linux-gnu (aarch64) using EditLine wrapper
Connection id: 189
Current database: gogs
Current user: gogs@localhost
SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server: MariaDB
Server version: 10.11.14-MariaDB-0+deb12u2 Debian 12
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb3
Conn. characterset: utf8mb3
TCP port: 3306
Uptime: 2 hours 12 min 4 sec
Threads: 4 Questions: 993 Slow queries: 0 Opens: 44 Open tables: 37 Queries per second avg: 0.125
————–
3、
stevenroc@stevenroc:~ $ mysql -u gogs -p -h 127.0.0.1 -e “STATUS;” gogs
Enter password:
————–
mysql Ver 15.1 Distrib 10.11.14-MariaDB, for debian-linux-gnu (aarch64) using EditLine wrapper
Connection id: 183
Current database: gogs
Current user: gogs@localhost
SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Current pager: stdout
Using outfile: ”
Using delimiter: ;
Server: MariaDB
Server version: 10.11.14-MariaDB-0+deb12u2 Debian 12
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb3
Conn. characterset: utf8mb3
TCP port: 3306
Uptime: 1 hour 59 min 7 sec
Threads: 6 Questions: 989 Slow queries: 0 Opens: 44 Open tables: 37 Queries per second avg: 0.138
————–
一、apache配置
stevenroc@stevenroc: $ cd /etc/apache2/sites-available
apache配置一个域名两个SSL证书
zhonjin.com,chanking.zhonjin.com
apache配置一个域名一个SSL证书git.zhonjin.com
1、sudo nano default-ssl.conf
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName zhonjin.com
ServerAlias chanking.zhonjin.com
SSLCertificateFile /etc/letsencrypt/archive/zhonjin.com/fullchain1.pem
SSLCertificateChainFile /etc/letsencrypt/archive/zhonjin.com/chain1.pem
SSLCertificateKeyFile /etc/letsencrypt/archive/zhonjin.com/privkey1.pem
SSLCACertificatePath /etc/apache2/cert/
SSLCACertificateFile /etc/apache2/cert/ca-bundle.crt
# 其他配置…
</VirtualHost>
2、sudo nano git.zhonjin.com-ssl.conf
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName git.zhonjin.com
SSLEngine on
# 反向代理配置
# 反向代理核心
ProxyPreserveHost on
# ProxyRequests off
# 转发 HTTP 请求:匹配 /gogs 路径到后端 Gogs 服务
# ProxyPass /gogs/ http://127.0.0.1:3000/ connectiontimeout=5 timeout=30
# ProxyPassReverse /gogs/ http://127.0.0.1:3000/
ProxyPass / http://127.0.0.1:3000/ connectiontimeout=5 timeout=30
ProxyPassReverse / http://127.0.0.1:3000/
SSLCertificateFile /etc/letsencrypt/archive/git.zhonjin.com/fullchain1.pem
SSLCertificateChainFile /etc/letsencrypt/archive/git.zhonjin.com/chain1.pem
SSLCertificateKeyFile /etc/letsencrypt/archive/git.zhonjin.com/privkey1.pem
SSLCACertificatePath /etc/apache2/cert/
SSLCACertificateFile /etc/apache2/cert/ca-bundle.crt
</VirtualHost>
3、操作如下:
启用配置
sudo a2ensite default-ssl.conf
sudo a2ensite git.zhonjin.com-ssl.conf
修改文件名
sudo mv zhonjin.com-ssl.conf git.zhonjin.com-ssl.conf
禁用配置
sudo a2dissite zhonjin.com-ssl.conf
sudo systemctl restart apache2
sudo chown -R stevenroc:stevenroc /etc/letsencrypt/archive
复制ssl证书备用
ubuntu 复制目录文件夹下面所有子文件夹及文件到另一个位置,并都改为用户及用户组
sudo rsync -av –chown=stevenroc:stevenroc /etc/letsencrypt/archive/ /etc/letsencrypt/archiveex/
sudo rsync -av –chown=stevenroc:stevenroc /etc/apache2/sites-available/ /etc/apache2/sites-availableex/
详细配置文件参考附件:
sites-available.git.zhonjin.com_gogs.app.ini
========================================
二、gogs sqlite3转换为mariadb
1、
GRANT ALL PRIVILEGES ON gogs.* TO ‘gogs’@’localhost’ IDENTIFIED BY ‘xiaoGitBN-‘;
[database]
#TYPE = sqlite3
#HOST = 127.0.0.1:5432
#NAME = gogs
#SCHEMA = public
#USER = gogs
#PASSWORD =
#SSL_MODE = disable
#PATH = data/gogs.db
[database]
TYPE = mysql
HOST = 127.0.0.1:3306
NAME = gogs
SCHEMA = public
USER = gogs
PASSWD = xiaoGitBN-
SSL_MODE = disable
; 注释掉或删除 SQLite 配置
; PATH = data/gogs.db
# 执行恢复命令
./gogs restore –config custom/conf/app.ini –database-only –from=”gogs-backup-20260223222350.zip” -v
一、备份app.ini
stevenroc@stevenroc:~ $ sudo rsync -av –chown=git:git /home/git/gogs/custom/conf/app.ini /home/git/gogs/custom/conf/app.git.ini
stevenroc@stevenroc:~ $ sudo cp /home/git/gogs/custom/conf/app.ini /home/git/gogs/custom/conf/app.20260222.ini
备份到普通目录
stevenroc@stevenroc:/opt/openAI/project/mqtt_c $ sudo rsync -av –chown=stevenroc:stevenroc /home/git/gogs/custom/conf/app.ini /home/stevenroc/app.git.ini
sending incremental file list
app.ini
sent 1,376 bytes received 35 bytes 2,822.00 bytes/sec
total size is 1,273 speedup is 0.90
stevenroc@stevenroc:/opt/openAI/project/mqtt_c $ sudo rsync -av –chown=stevenroc:stevenroc /home/git/gogs/custom/conf/ /home/stevenroc/gogs/
sending incremental file list
created directory /home/stevenroc/gogs
./
app.20260120.bak
app.20260222.ini
app.20260222.inj
app.git.ini
app.https.ini
app.ini
sent 7,962 bytes received 176 bytes 16,276.00 bytes/sec
total size is 7,490 speedup is 0.92
stevenroc@stevenroc: $ cd /etc/apache2/sites-available
2、加载zhonjin.com-ssl.conf https://git.zhonjin.com:40717/ 转发内网 http://127.0.0.1:3000
stevenroc@stevenroc: $ sudo a2ensite zhonjin.com-ssl.conf
二、https://git.zhonjin.com:40717/
stevenroc@stevenroc: $ cd /etc/apache2/sites-available
stevenroc@stevenroc:/etc/apache2/sites-available $ sudo nano zhonjin.com-ssl.conf
ProxyPreserveHost on
#ProxyRequests off
# https转发 HTTP 请求:匹配 /gogs 路径到后端 Gogs 服务
#ProxyPass /gogs http://127.0.0.1:3000/ connectiontimeout=5 timeout=30
#ProxyPassReverse /gogs http://127.0.0.1:3000/
ProxyPass / http://127.0.0.1:3000/ connectiontimeout=5 timeout=30
ProxyPassReverse / http://127.0.0.1:3000/
三、修改https配置文件
http://chanking.zhonjin.com:3000/steven_roc/mqtt_c.git

修改为:
https://git.zhonjin.com:40717/steven_roc/mqtt_c.git
stevenroc@stevenroc:~ $ sudo systemctl restart gogs
stevenroc@stevenroc:~ $ sudo -i
root@stevenroc:~# sudo nano /home/git/gogs/custom/conf/app.ini
注意:和web服务器转发一致 https://git.zhonjin.com:40717/
[server]
#DOMAIN = localhost
DOMAIN = git.zhonjin.com
#/gogs # 强制生成 HTTPS 链接
#ROOT_URL = https://chanking.zhonjin.com/gogs #/gogs # 强制生成 HTTPS 链接
ROOT_URL = https://git.zhonjin.com
#内部端口#PROTOCOL=https
PROTOCOL=http
HTTP_PORT = 3000
#20260223 EXTERNAL_URL = https://127.0.0.1:3000/
EXTERNAL_URL =https://git.zhonjin.com:40717/
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
OFFLINE_MODE = false
四、git clone 上传下载源码
stevenroc@stevenroc:/opt/openAI/project $ git clone https://git.zhonjin.com:40717/steven_roc/mqtt_c.git
Cloning into ‘mqtt_c’…
Username for ‘https://git.zhonjin.com:40717’: steven_roc
Password for ‘https://steven_roc@git.zhonjin.com:40717’:
remote: Enumerating objects: 60, done.
remote: Counting objects: 100% (60/60), done.
remote: Compressing objects: 100% (56/56), done.
remote: Total 60 (delta 18), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (60/60), 19.01 KiB | 748.00 KiB/s, done.


五、
自适应IP