此部分將講解如何設定 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 模式。

cloudflare crypto

  1. 找到 origin certificate 按下 create certificate

cloudflare create certificate

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

cloudflare certificate creation

  1. 將 origin certificate 跟 private key 內容複製,貼上建立檔案。

cloudflare certificate

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