一、環境
我把Gogs架設在了阿里雲學生機上,使用的是CentOS7.4 x64,利用寶塔Linux面板安裝了lnmp的運行環境。在此前尚未增加https的時候,我是利用nginx的反向代理,把80端口轉發到3000端口(Gogs的默認服務端口是3000)就可以直接訪問搭建完成的Gogs了,nginx配置如下【下文中所指的 www.host 皆爲你自己訪問gogs的域名】
server {
listen 80;
server_name www.host.com;
location / {
proxy_pass http://localhost:3000;
}
}
二、增加Https
2.1、申請HTTPS證書,並下載證書相關文件
在阿里雲處填寫相關信息並提交申請後,你可以下載到一個壓縮包,其中包含了 fileName.pem / fileName.key 兩個文件
2.2、修改Gogs配置文件
打開FXtp或其他工具,在gogs的安裝目錄中 custom/conf/app.ini 文件中修改下列配置選項
[server]
PROTOCOL = https
#注意這裏要改成https://
ROOT_URL = https://www.host.com/
#證書文件
CERT_FILE = custom/https/fileName.pem
KEY_FILE = custom/https/fileName.pem
3、修改nginx反向代理配置
此前nginx反向代理如下
server {
listen 80;
server_name www.host.com;
location / {
proxy_pass http://localhost:3000;
}
}
現在補充一些配置
server {
listen 443;
server_name www.host.com;
ssl on;
ssl_certificate /home/git/gogs/custom/https/fileName.pem;
ssl_certificate_key /home/git/gogs/custom/https/fileName.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
#這裏主要也要將http://修改爲https://
proxy_pass https://localhost:3000;
}
}
server {
#HTTP跳轉HTTPS
listen 80;
server_name www.host.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
修改後重啓nginx後就可以享受https了
三、心得
事實上,在2.2這個步驟完成後就可以通過訪問 https://你的IP地址:3000 看到,https實際上已經開啓了。也就是說你如果不需要用域名訪問你的gogs,直接開放3000端口,做到2.2步驟就可以了。
但我是通過開放443和80使用域名來進行端口轉發的,這樣的好處是:只要開放80端口,就可以直接訪問你的網站,而不需要一個網站開一個端口。