我設定的 SSL 是透過 Let's encrypt,但是 Let's Encrypt 每隔90天要重新取得一次憑證,但有一個有一個服務叫做 Certbot 設定起來非常方便!

透過 One-click Apps 建立的 ghost 也能使用這個服務

首先先連線至伺服器,並且按照Certbot上完成 Install 的步驟

接著是設定SSL的部分,設定時候可能要先把 nginx 先關掉

service nginx stop

如果剛才登入伺服器後就開始安裝的話,要執行的指令就會是以下的指令

~/certbot-auto certonly

我的設定如下

$ How would you like to authenticate with the ACME CA?
2 Automatically use a temporary webserver (standaloce)
$ Please enter in your domain name(s) (comma and/or space separated)
輸入部落格的網址

成功將SSL設定好之後,就會看到一段恭喜的訊息

接著需要設定 nginx 的檔案/etc/nginx/sites-available/ghost

# 開啟檔案的指令
# ex: nano /etc/nginx/sites-available/ghost
nano 檔案路徑

設定的內容如下

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    listen 443 ssl;

    server_name 你的網址;

    ssl_certificate /etc/letsencrypt/live/你的網址/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/你的網址/privkey.pem;

    root /usr/share/nginx/html;
    index index.html index.htm;

    client_max_body_size 10G;

    location / {
        proxy_pass http://localhost:2368;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_buffering off;
    }
}

如果要強制網站走https,那就再修改/var/www/ghost/config.js,將url:的設定改成有https的網址,例如:

config = {
  production: {
    url: 'https://blog.gary-lai.com',
    ...
  },
  ...
}

最後開啟nginx

service nginx start