前言
現在,免費SSL證書已經很普遍了,但是,申請和配置SSL證書仍然是一件較為繁瑣的事,修改web服務配置在所難免,且不同的web服務配置方法不一樣,不具備通用性。本文介紹一種通用的快速配置方法,web服務只需要做很少的改動(只需要修改埠號即可),支援任何web服務,只需要滿足以下條件:
- 你的伺服器能使用podman或者docker
- 你的站點能透過公網訪問
步驟
這裡以podman為例(docker使用者只需要把podman
命令替換為docker
即可)
-
使用終端登入你的伺服器
-
執行
podman --help
命令檢查是否已經安裝podman,如果提示命令找不到,則使用下面命令安裝Debian/Ubuntu 20.10+ 系統:
sudo apt-get -y install podman
Centos系統:
sudo yum -y install podman
其他系統可參照podman檔案自行安裝:https://podman.io/getting-started/installation
-
如果原web服務的埠號是80,將其改成任意一個非80埠,保證80埠不被佔用,這裡假設修改後的埠號為8080,伺服器內網IP為192.168.1.100
-
執行如下命令:
注意: 下面出現的
www.example.com
替換為你的真實域名。mkdir vhosts mkdir data touch vhosts/www.example.com.toml
編輯
vhosts/www.example.com.toml
檔案,輸入如下內容,並儲存。upstream = ["192.168.1.100:8080"]
-
執行以下命令:
注意:
<YOUR_EMAIL>
替換為你的真實郵箱需要使用sudo執行的原因是繫結80埠需要root許可權,如果你的伺服器沒有這個限制,可以把sudo去掉,以普通使用者許可權執行即可。
podman run -d --name nginx-proxy \ --restart always \ --env AUTO_SSL=on \ --env AUTO_SSL_EMAIL=<YOUR_EMAIL> \ -v "$PWD/vhosts":/etc/nginx-proxy/vhosts:ro \ -v "$PWD/data":/var/nginx-proxy \ -p 80:80 \ -p 443:443 \ kasonyang/nginx-proxy:latest
完成以上步驟後,等待一兩分鐘即可,輸入https://你的域名
檢視是否可以正常訪問,如果不行,可以使用podman logs nginx-proxy
檢視一下是否有報錯。
SSL證書時效
申請的SSL證書有效期3個月,每天會自動檢查,到期前會自動更新,更新不會中斷服務。
後續增加域名
後續如果有更多域名需要啟用https,就很簡單了。參照步驟4,為新域名在vhosts
目錄下建立一個對應的toml配置檔案即可。新增檔案後,80埠(http)立即可用,443埠(https)需要等待幾分鐘才能完成生效(申請證書需要時間)。
原始碼
本文使用的docker映象開源,獲取原始碼可以戳這個連結: https://github.com/kasonyang/docker-nginx-proxy