Setup ghost support for HTTPS with cloudflare
此部分將講解如何設定 ghost 擁有自己的 domain 並且透過 cloudflare 讓全站 HTTPS,cloudflare 則不多說明如何設定,可參考官方說明依步驟即可完成。
設定 Custom Domain
若一開始走 ghost-cli 安裝時就有設定自己的 domain,則可跳過此步驟。
- 先至
/var/www/ghost/config.production.json
內,將url
改為自己要的網址,並記得附上 https 前綴 protocol,例如:https://blog.hothero.org
。 - 在
/etc/nginx/sites-available/
中建立一個 blog.hothero.org.conf,內容如下:
server {
listen 80;
# listen [::]:80;
listen 443 ssl;
ssl_certificate /home/hothero/cloudflare-ssl/certificate.pem;
ssl_certificate_key /home/hothero/cloudflare-ssl/private.key;
server_name blog.hothero.org;
root /var/www/ghost/system/nginx-root;
# root /var/www/html;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:2368;
}
location ~ /.well-known {
allow all;
}
client_max_body_size 50m;
}
其中留意 ssl_certificate 與 ssl_certificate_key 的位置,稍後我們有了 cloudflare 的認證資料後需改成自己的路徑。
取得 cloudflare SSL certificate
- 進到 cloudflare 後台選擇自己的網域後,點選上方的 Crypto,將自己的 SSL 選為 Full 模式。
- 找到 origin certificate 按下 create certificate
- 維持原來設定,按下 next
- 將 origin certificate 跟 private key 內容複製,貼上建立檔案。
origin certificate 副檔名為 .pem,private key 副檔名則為 .key。
完成 Nginx Conf
接著我們將剛剛建立的 nginx conf 中 ssl_certificate path 改成自己的
# /etc/nginx/site-available
ssl_certificate your_path;
ssl_certificate_key your_path;
並且將這個設定檔 symbolic 到 /etc/nginx/site-enabled 中,代表要正式啟用這個設定檔
sudo ln -s /etc/nginx/sites-available/blog.hothero.org.conf /etc/nginx/sites-enabled/blog.hothero.org.conf
重新啟用 nginx 以及 ghost
sudo service nginx restart
ghost restart # run this command in /var/www/ghost
解決 Admin 後台無法使用的問題
可以參照官方說明,在 cloudflare 的 page rule 中加入該設定即可。