前言

在我們測試許多 WP 第三方套件時,往往會需要有 domain 才能進行,即便想過在 local 端設定 https 進行測試,不過還是稍嫌麻煩,於是我們決定透過 subdoamin 達到我們的測試目的,是最快速方便的。

大綱

  • 何謂 子網域 (subdomain) 以及與 子目錄 (subfolder) 差別
  • WP 實作 subdomain

何謂 子網域 (subdomain) 以及與 子目錄 (subfolder) 差別

以我瘋網站為例子
www.wowfuncode.com 其中的 www 就是子網域 (subdomain) 一種 ,想像成買了一整棟公寓大廈,每一間公寓房間都是一個 subdomain 概念,每一間公寓房間都是獨立自成一局,所以如果我們想要有專屬的 部落格、作品集,我們能依賴 subdomain 做成

這些 subdomain 都能各自申請 SSL 憑證,並且有 https 進行安全連接,這就是 subdomain 好處。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24107647-ac69-417e-a0b8-1b0b931fb6c2/Untitled.png

參考來源

而 子目錄 (subfolder) 可以想像成是一間公寓中有許多房間,每一個房間有各自的功能,房間、客廳、廚房、浴室等等,所以網址就可能打成

但是終歸,他們都還是在同一間公寓 (www) 之內,但也不能獨立去使用,就像是沒有人賣公寓卻獨立賣公寓內的廚房,所以他也不能額外多出來變成一個新的網域去使用,這大致就是子目錄概念。

WP 實作 subdomain

Step1 domain服務商新增子網域
由於我們是在 Godaddy 買網域,故這邊我們是在 Godaddy 進行 subdomain 的新增,並將 subdomain 指向另外一個新 IP

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8f02aec5-0866-49ab-aeb9-434c9657fa26/Untitled.png

為subdomain申請SSL

前幾章節我們才剛介紹如何申請SSL,這邊我們再來複習一下,一樣是透過SSH進入GCP的VM,並且輸入 sudo su 開啟最高權限。

因為我們架站的WordPress版本為WordPress with NGINX and SSL Certified by Bitnami and Automattic,因此在裡面已經有申請 Let’s Encrypt SSL憑證的執行檔了,今天我們就利用裡面的執行檔進行申請。

首先透過Email申請SSL憑證(以下的subdomain範例使用:it-ironman.myftp.org)

sudo /opt/bitnami/letsencrypt/scripts/generate-certificate.sh -m 申請SSL的Email -d 欲申請的Subdomain

接下來就會詢問是否使用這組Email進行申請,並提醒會關閉server的服務,按Y繼續即可,之後會詢問是否同意Let’s Encrypt的服務條款,此時一樣按Y同意即可。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/29c4700b-2ec0-4f93-80b5-dbc9b2a2cfdb/04.png

申請完畢後,系統會詢問是否要自動更新憑證,因為Let’s Encrypt憑證效期為90天,為避免後續麻煩,這邊就輸入Y設定自動更新

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/003b983f-b3ef-4ff9-920c-60f9c9f911f1/05.png

此時回到網站,就可以看到網址列旁有鎖頭的符號出現了,點擊鎖頭後就可以觀看SSL憑證的相關資訊了。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6a601951-eb2a-439a-8b22-db36b14de317/07.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b8ac5b6f-a645-408c-8d03-8d1bcb49a1ec/08.png

額外加碼:強制以HTTPS連線

在申請完SSL後,我們會希望使用者使用的是安全的HTTPS連線,此時就需要將HTTP強制轉址至HTTPS,首先,還是得透過SSH連線進入GCP VM。

輸入以下指令進入config檔

sudo nano /opt/bitnami/nginx/conf/bitnami/bitnami.conf

將server_name修改成自己的subdomain,並添加一行將HTTP轉址至HTTPS的指令,以it-ironman.myftp.org為範例)

return 301 https://it-ironman.myftp.org$request_uri;

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3faca74d-3765-4e72-98d1-0a1737c77168/10.png

修改完成後,此時要再重新啟動server,這邊使用的是nginx

sudo /opt/bitnami/ctlscript.sh restart nginx

全部都設定完畢後,此時就可以使用HTTP連線,網站就會自動以HTTPS進行連線。