我們?cè)诖罱ňW(wǎng)站的時(shí)候默認(rèn)都是開啟的HTTP協(xié)議,但現(xiàn)在更為推薦的是HTTPS的方式辈双,這樣會(huì)更加安全柜砾,有利于網(wǎng)站被百度收錄,提高排名证芭。
我們先來了解一下 HTTPS 和 SSL吧担映。
SSL證書是數(shù)字證書的一種,SSL 證書就是遵守 SSL協(xié)議官硝,由受信任的數(shù)字證書頒發(fā)機(jī)構(gòu)CA短蜕,在驗(yàn)證服務(wù)器身份后頒發(fā),具有服務(wù)器身份驗(yàn)證和數(shù)據(jù)傳輸加密功能达箍。SSL證書通過在客戶端瀏覽器和Web服務(wù)器之間建立一條SSL安全通道(Secure socket layer(SSL)安全協(xié)議是由Netscape Communication公司設(shè)計(jì)開發(fā)铺厨。
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道赃磨,簡(jiǎn)單講是HTTP的安全版洼裤。HTTPS 相當(dāng)于是“HTTP over SSL”。舉個(gè)簡(jiǎn)單的例子值骇, SSL就像你家自來水管道外面的一個(gè)防護(hù)膜移国。
Google認(rèn)為,基于上述安全方面的原因使碾,所以對(duì)使用HTTPS的網(wǎng)站會(huì)有小幅度的搜索排名提升。雖然提升的范圍遠(yuǎn)遠(yuǎn)比不上網(wǎng)站高質(zhì)量?jī)?nèi)容的排名效果拘鞋,但這也影響不了Google推進(jìn)HTTPS協(xié)議的決定矢门。據(jù)相關(guān)信息稱,為了提升全網(wǎng)的安全性隔躲,Google可能會(huì)考慮加重HTTPS對(duì)搜索引擎的排名比重峡扩。SEO切換到HTTPS最為明顯的一個(gè)特點(diǎn)就是提升搜索引擎的排名障本。如上所述,Google已確認(rèn)HTTPS網(wǎng)站的輕微提升排名案训。雖然有些公司認(rèn)為這一個(gè)微調(diào)毫無作用粪糙,但以目前的狀態(tài),HTTPS的價(jià)值很可能隨著時(shí)間的推移而增加城舞。
所以寞酿,讓W(xué)ordPress搭建的網(wǎng)站支持SSL數(shù)字證書,實(shí)現(xiàn)HTTPS訪問就很有必要了拉馋。
一 惨好、申請(qǐng)免費(fèi)的SSL證書
我使用的是阿里云的域名和服務(wù)器,LNMP開源框架(Centos7.4+NGINX1.14+PHP7.0+MYSQL5.7)日川,在阿里云的產(chǎn)品與服務(wù)里找到SSL證書,在里面可以申請(qǐng)為期一年的免費(fèi)DV證書龄句,申請(qǐng)好后,會(huì)提供你幾種不同服務(wù)器下的證書文件透葛,本文以Nginx服務(wù)器為例。
下載好證書后,在Nginx服務(wù)器的安裝目錄下手動(dòng)創(chuàng)建cert文件夾萨蚕,用于存放下載的證書文件岳遥,證書文件一共有兩個(gè),一個(gè)是.pem,另一個(gè)是.key浩蓉。
二捻艳、配置Nginx服務(wù)器
使用FileZilla打開 /etc/nginx/conf.d/default.conf文件。
修改或添加以下字段 认轨。
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="php" cid="n118" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, Menlo, Monaco, monospace, serif; font-size: 0.9rem; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(254, 254, 254); display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; margin-left: 1em; padding-left: 1em; border: 1px solid rgb(221, 221, 221); padding-bottom: 8px; padding-top: 6px; margin-bottom: 1.5em; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">#https server
server {
listen 443 ssl; #SSL協(xié)議訪問端口號(hào)為443嘁字。此處如未添加ssl,可能會(huì)造成Nginx無法啟動(dòng)假栓。
server_name localhost; #將localhost修改為您證書綁定的域名霍掺,例如:www.example.com。
root wordpress根目錄;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #將domain name.pem替換成您證書的文件名牙丽。
ssl_certificate_key cert/domain name.key; #將domain name.key替換成您證書的密鑰文件名兔魂。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件析校。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用該協(xié)議進(jìn)行配置铜涉。
ssl_prefer_server_ciphers on;
location / {
try_files uri/ /index.php?$query_string;
index index.php index.html index.htm;
}
?
pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME fastcgi_script_name;
include fastcgi_params;
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
?
location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
} </pre>
如果你需要將HTTP請(qǐng)求跳轉(zhuǎn)到HTTPS請(qǐng)求芙代,添加以下字段盖彭。
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="php" cid="n120" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, Menlo, Monaco, monospace, serif; font-size: 0.9rem; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(254, 254, 254); display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; margin-left: 1em; padding-left: 1em; border: 1px solid rgb(221, 221, 221); padding-bottom: 8px; padding-top: 6px; margin-bottom: 1.5em; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">#http 跳轉(zhuǎn)https
server {
listen 80;
server_name localhost; #將localhost修改為您證書綁定的域名召边,例如:www.example.com。
rewrite ^(.*)host$1 permanent; #將所有http請(qǐng)求通過rewrite重定向到https片挂。
location / {
index index.php index.html index.htm;
}
}
?</pre>
配置完成后贞盯,使用systemctl stop/restart/start nginx.service關(guān)閉重啟Nginx服務(wù)器。
三邻悬、wordpress設(shè)置
此時(shí)再使用域名訪問時(shí)可能會(huì)出現(xiàn)404父丰,可能是服務(wù)器的443端口沒有打開掘宪。去阿里云控制臺(tái),找到實(shí)例安全組镀首,添加出入規(guī)則鼠次,443(HTTPS)。
此時(shí)再訪問網(wǎng)站成翩,應(yīng)該是能夠訪問了赦役,但可能會(huì)出現(xiàn)樣式錯(cuò)亂的情況,這是由于wordpress沒有開啟全站HTTPS术羔,請(qǐng)求的css,js等樣式文件仍然是HTTP的方式請(qǐng)求的释移。
找到wordpress網(wǎng)站根目錄的配置文件wp-config.php鱼喉,在里面找到下面這段代碼
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="php" cid="n126" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, Menlo, Monaco, monospace, serif; font-size: 0.9rem; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(254, 254, 254); display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; margin-left: 1em; padding-left: 1em; border: 1px solid rgb(221, 221, 221); padding-bottom: 8px; padding-top: 6px; margin-bottom: 1.5em; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">/* 好了扛禽!請(qǐng)不要再繼續(xù)編輯。請(qǐng)保存本文件豆巨。使用愉快掐场! /
?
/* WordPress目錄的絕對(duì)路徑。 */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(FILE) . '/');</pre>
然后在上面這段代碼的前一行萍膛,加入下面這段代碼
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="php" cid="n128" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, Menlo, Monaco, monospace, serif; font-size: 0.9rem; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(254, 254, 254); display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; margin-left: 1em; padding-left: 1em; border: 1px solid rgb(221, 221, 221); padding-bottom: 8px; padding-top: 6px; margin-bottom: 1.5em; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">$_SERVER['HTTPS'] = 'ON'; //設(shè)置Wordpress全站開啟HTTPS蝗罗。</pre>
注意:前面的代碼代碼必須要加在特定的位置蝌戒,這個(gè)位置很關(guān)鍵,加錯(cuò)了位置(尤其是加在了后面的)桩匪,絕對(duì)會(huì)出現(xiàn)無法全站通過HTTPS訪問的后果友鼻。
然后登錄wordpress后臺(tái),選擇常規(guī)妆档,將WordPress地址(URL)和站點(diǎn)地址(URL)兩個(gè)選項(xiàng)都改成https://加域名的形式借杰。
到此為止,訪問域名應(yīng)該會(huì)出現(xiàn)綠色的小鎖了纤虽,也就完成了從HTTP站點(diǎn)到HTTPS站點(diǎn)的轉(zhuǎn)變。
四洋措、遇到的問題
1菠发,之前手賤贺嫂,把服務(wù)器的yum和python都搞壞了,無奈只能通過rpm方式安裝二者第喳,但是過于麻煩曲饱,于是重裝了系統(tǒng)映像,過程中對(duì)于wordpress網(wǎng)站的備份導(dǎo)出用到了All-in-One WP Migration插件楔敌,可以說非常好用且順利驻谆,點(diǎn)點(diǎn)鼠標(biāo)就完成了,但是如果網(wǎng)站過大的話旺韭,可能下載起來會(huì)比較慢一下掏觉,導(dǎo)入時(shí)選擇備份文件也是一鍵導(dǎo)入的澳腹。
2,SSL設(shè)置后自動(dòng)下載根目錄的index.php而不是載入:這個(gè)是由于SSL php腳本未能解析酱塔。原來是我在設(shè)置 /etc/nginx/conf.d/default.conf文件時(shí)沒有加下以下代碼羊娃,加上后,便能順利的訪問了。
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="php" cid="n162" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Consolas, Menlo, Monaco, monospace, serif; font-size: 0.9rem; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(254, 254, 254); display: block; break-inside: avoid; text-align: left; white-space: normal; position: relative !important; margin-left: 1em; padding-left: 1em; border: 1px solid rgb(221, 221, 221); padding-bottom: 8px; padding-top: 6px; margin-bottom: 1.5em; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"># pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME fastcgi_script_name;
include fastcgi_params;
fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
?
location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}</pre>