在今年的早些時候百度搜索已經全面實現 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 化,有需要參考最終實現效果的可以參考我的博客,所有的代碼修改都是原版分享沒有保留,同時歡迎大家留言探討。