Setup ghost support for HTTPS with cloudflare

此部分將講解如何設定 ghost 擁有自己的 domain 並且透過 cloudflare 讓全站 HTTPS,cloudflare 則不多說明如何設定,可參考官方說明依步驟即可完成。

設定 Custom Domain

若一開始走 ghost-cli 安裝時就有設定自己的 domain,則可跳過此步驟。

  1. 先至 /var/www/ghost/config.production.json 內,將 url 改為自己要的網址,並記得附上 https 前綴 protocol,例如: https://blog.hothero.org
  2. /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

  1. 進到 cloudflare 後台選擇自己的網域後,點選上方的 Crypto,將自己的 SSL 選為 Full 模式。

  1. 找到 origin certificate 按下 create certificate

  1. 維持原來設定,按下 next

  1. 將 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 中加入該設定即可。