在今年的早些時候百度搜索已經全面實現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證書。
第四步:配置網站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.***.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/***.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.***.com','https://www.***.com') ;
以上六部即可實現lnmp下網站ssl的配置,並讓全站https模式訪問,具體的關於https模式訪問在百度SEO這一塊的表現,需要等待一些時間的數據,因為截至到這篇文章發布位置,我也只是剛剛將博客https化,有需要參考最終實現效果的可以參考我的博客,所有的代碼修改都是原版分享沒有保留,同時歡迎大家留言探討。