在今年的早些時候百度搜尋已經全面實現 https 模式,並宣稱已經可以抓取 https 網頁了,相比谷歌早年就已經支援 https 的抓取,百度雖然晚了一點,但是畢竟現在還是有了,站長之家上也有人探討關於 https 模式對百度谷歌 seo 的影響,雖然還沒有人給出實際測試的資料,但是百度全站 https 模式的話或多或少也能說明百度當下對 https 站點的態度吧!
然後切入主題講一講 Nginx 下配置網站 ssl 實現 https 模式訪問的方法
第一步:伺服器環境,lnmp 即 Linux+Nginx+PHP+MySQL,本文中以我的部落格為例,使用的是阿里雲最低檔的 vps+免費的 Linux 伺服器管理系統 WDCP 快速搭建的 lnmp 環境 (同類產品還有 amh 有免費版以及收費版),具體安裝以及使用方法都可以在其官方論壇找到詳細的操作檔案。
第二步:建立你的網站,使用 lnmp 環境建立你的網站,已有網站的,確保你的程式在 lnmp 下能夠正常的執行,以 WordPress 為例,lamp 跟 lnmp 下的偽靜態規則是不同的,有過更換的,要記得切換。
第三步:申請免費的 ssl 證書。
第四步:配置網站 ssl,找到你需要配置 ssl 的網站的 Nginx 配置檔案,以 WDCP 為例配置檔案在/www/wdlinux/nginx/conf/vhost/目錄,將以下程式碼新增只網站的配置檔案 server 中,同時為了方便管理,需要將你申請的 nginx 下的 ssl 證書上傳到/www/wdlinux/nginx/conf/目錄,不同的管理系統或者是手動配置的 lnmp 環境這個目錄都是不一樣的,請根據你的實際情況進行調整。
ssl on; ssl_certificate_key /www/wdlinux/nginx/conf/pastdust.key; ssl_certificate /www/wdlinux/nginx/conf/pastdust.crt;
因為 ssl 訪問的不是傳統網站的 80 埠,而是 443 埠則需要在配置檔案中繼續為網站新增 443 埠,為了方便不知道把以上放在配置檔案的什麼位置的人,以下將我網站完整的配置檔案貼出,可以根據你的實際情況進行修改。
server {
listen 80;
listen 443;
server_name pastdust.com www.pastdust.com;
root /www/web/pastdust_com/public_html;
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 /www/wdlinux/nginx/conf/pastdust.key;
ssl_certificate /www/wdlinux/nginx/conf/pastdust.crt;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
include rewrite/pastdust.conf;
}
確認以上都修改無誤之後,重啟 nginx 基本上這個時候你的網站就能透過 ssl 訪問了,但是還有一些細節問題需要調整,譬如以上網站配置檔案是 http 與 https 模式並存的,還需要做一個跳轉,件 http 模式的訪問全部跳轉到 https 模式。
第五步:網站強制訪問 https 模式,以 WordPress 為例,將以下的跳轉程式碼新增到當前網站所有使用的偽靜態規則 conf 檔案中,即可實現所有的 http 訪問都跳轉到 https 訪問,並且是繼承目錄的,具體實現方法就是把 http 模式訪問 301 重定向到 https 模式。
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;
到這個時候,你訪問你網站的某些頁面的時候,以使用 chrome 瀏覽器為例,部分頁面 https 不會顯示綠色,顯示的是打 X 或者是黃色,是因為你網站內部譬如 css 檔案,外鏈圖片等使用的依然是 http 模式,然後就是最後一步,全站 https 化。
第六步:全站 https 化,以 WordPress 為例,首先是修改網站主題中所有的 https 連結元素,然後在資料庫中批次替換 ssl 化之前新增的圖片附件,Sql 命令如下:
UPDATE wp_posts SET post_content = replace( post_content, 'http://www.weixiaoduo.com','https://www.weixiaoduo.com') ;
以上六部即可實現 lnmp 下網站 ssl 的配置,並讓全站 https 模式訪問,具體的關於 https 模式訪問在百度 SEO 這一塊的表現,需要等待一些時間的資料,因為截至到這篇文章釋出位置,我也只是剛剛將部落格 https 化,有需要參考最終實現效果的可以參考我的部落格,所有的程式碼修改都是原版分享沒有保留,同時歡迎大家留言探討。