上次把laravel環境架好後,希望能有個域名並且使用SSL
freenom 這個網站提供免費的域名可供使用,也有免費的DNS代管服務
這邊就不多贅述,網路上已有很多文章,且操作不難,最多可以用一年
再來是SSL憑證的部分,zerossl這個網站可以藉由let's encrypt提供免費的SSL憑證,只是每三個月要重新認證一次
在
這裡註冊完之後照著他的認證方式認證完成之後他會給你三個檔案
1.ca_bundle.crt
2.certificate.crt
3.private.key
首先我們需要將前兩個檔案crt合併起來,打開空的記事本,然後把這兩個檔案的內容貼成一個
像是如下
-----BEGIN CERTIFICATE-----
.
.
.
certificate.crt的內容
.
.
.
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
之後把這個存成xxx.crt檔 名字自己決定
再把這個檔案和和private.key這兩個檔案放到主機上
這邊要注意,因為之前是使用容器來部屬環境,所以檔案要放在workspace容器所對應的目錄內
上次是~/laravel-project 對應到/var/www
放入之後就是設定nginx了
這邊打開容器內nginx的設定檔
vim ~/Laradock/nginx/sites/laravel.conf
要做的是有兩個
1.把原本的站台改成443port
2.把80port rewrite到443port
這樣使用者使用http連進來時就會強制轉到https了
設定檔參考如下
server {
#80轉443
listen 80;
listen [::]:80;
server_name 你的域名;
return 308 https://$server_name$request_uri;
}
server {
#https
listen 443 ssl;
ssl_certificate /var/www/xxx.crt;
ssl_certificate_key /var/www/private.key;
server_name 你的域名;
root /var/www/laravel/public;
...以下略
}
儲存離開之後重啟服務就可以囉!
docker-compose down
docker-compose up -d mysql phpmyadmin nginx
至於為何http導向status是308可參考下方
[301、308、302、307 重新導向差異]
301:永久轉址,轉址時,改變Request Method為GET,無法保留POST資料。
308:永久轉址,轉址時,不改變Request Method,能保留POST資料。
302:暫時轉址,轉址時,改變Request Method為GET,無法保留POST資料。
307:暫時轉址,轉址時,不改變Request Method,能保留POST資料。
這樣手動做的話每三個月就要重新認證一次,其實有個工具叫certbot可以自動幫你去認證憑證,只是最近沒什麼時間研究
之後有空的話再用看看吧