LNMP環境(nginx)安裝SSL憑證教學!(以wordpress為例)

在今天,終於把網站放上SSL憑證了,從晚上11點搞到現在半夜3.30分,主要是因為網路上nginx安裝SSL教學文都會有莫名的錯誤,之後自己研究然後試了好幾次才成功把網站成功使用SSL。這篇文章的環境是LNMP一鍵包,如果你不是使用lnmp一鍵包,但是使用nginx一樣可以參考此教學,主要就是目錄相關的位子要知道就好。

教學開始

、首先,你必須先取得SSL的憑證,以目前來說有免費或付費的,我是使用沃通的免費SSL憑證,以免費的SSL憑證來說,我認為沃通是最好用的。

、申請完成也拿到憑證後,請解壓縮〈for Nginx〉裡面的文件,會有兩個檔案,分別是.crt和.key

1-lnmpssl

、之後把.crt和.key使用SFTP上傳到/usr/local/nginx/conf

2-lnmpssl

、為了安全,再把.ctr和.key權限設定為600。(右鍵→檔案權限)

3-lnmpssl

、之後進入/usr/local/nginx/conf/vhost,把對應你網站的.conf檔案下載到電腦中,並使用筆記本或是sublime text之類的編輯器打開他。

打開後,把以下代碼〝直接複製→貼上覆蓋上去〞,在把我有使用藍字的地方修改成自己的就可以了。

 

server
{
listen 80;
#listen [::]:80;
server_name bonbg.com;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/bonbg.com;

include wordpress.conf;
#error_page 404 /404.html;
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
#include pathinfo.conf;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

location ~ .*\.(js|css)?$
{
expires 12h;
}
listen 443;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
ssl on;
ssl_certificate_key /usr/local/nginx/conf/bonbg.key;
ssl_certificate /usr/local/nginx/conf/bonbg_bundle.crt;
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}

、之後使用SSH,輸入

/usr/local/nginx/sbin/nginx -t

這段指令主要是檢查nginx有沒有錯誤,如果修改完.conf檔案後,出現下方訊息,代表是成功的。

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4-lnmpssl

、如果確定nginx是正常的,重啟nginx。

lnmp nginx restart

5-lnmpssl

這時候你會發現,網址列輸入https://你的網址.xxx,已經可以正常連線,但是如果你想要每個網址都使用https進行連線呢? 這時候就需要使用強制跳轉了,繼續往下看吧!

 

、如果你是使用Wordpress來進行架站,並且有使用偽靜態那直接設定偽靜態的文件即可。Wordpress偽靜態的檔案在/usr/local/nginx/conf/wordpress.conf

一樣使用SFTP把它下載到電腦,並用內建筆記本或其他編輯器來進行修改。

打開wordpress.conf後,在最下面把這段代碼貼上。

if ($server_port = 80) {
return 301 https://$server_name$request_uri;
}
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
error_page 497 https://$server_name$request_uri;

如果你不是使用Wordpress,有找到有一篇nginx強制跳轉https規則的文章,寫得滿不錯的,可以參考下。(如果你是使用Wordpress可以不用理我這段)

、設定強制跳轉後,別忘記也要修改Wordpress一般設定中的WordPress 位址(URL)和網站位址(URL)喔!

6-lnmpssl

、強制跳轉https後,你會發現網址列並沒有一個綠色鎖頭(如果有可以直接忽視我這段),而是出現灰色鎖頭+三角形。

7-lnmpssl

這時候代表你並沒有全站使用https連線,有部分是使用http進行連線的,這時候就使用Google chrome連結到你有出現三角形的網頁,然後按下F12然後選擇Console,來找尋使用http的連結。

8-lnmpssl

至於這邊就依照Console給予的提示去找並修改吧!

十一、修改完https後,你就會發現鎖頭變綠色的了喔! 這代表你已經成功使用上SSL了

9-lnmpssl

 

 

 

 

Bon

Bon

目前大二生,把經營網站當作興趣,只要看到什麼新奇、好用的東西都會分享在部落格中。如果你也喜歡我的文章,歡迎留言給我!

More Posts

4 Responses to LNMP環境(nginx)安裝SSL憑證教學!(以wordpress為例)

  1. 唯美网 說道:

    感謝博主的文章,很有幫助。
    可惜還有一箇問題,就是访问所有文章都提示:404 Not Found 不知道该怎么处理?

發表迴響