我是如何实现全站https的

请原谅取这种装逼的名字,无奈看大神们装逼惯了,我也想来体验一下这样的生活。关于wordpress上https的文章已经很多人写过了,至于我还要写是因为我自己时间中遇到了一些问题,想把经验奉献给大家,后者可以少走弯路,小白们可以早点睡觉吧。
1.ssl证书选择
如果是公司的话当然要ev大绿条来彰显气派了(装逼)。当然普通用户还是选择dv或者ov就好。付费的你们自己挑,我只推荐免费的。
首选Let's Encrypt吧,为什么呢?因为他能一直续命,连脚本都有简单放心。有些人可能玩不转,那我推荐腾讯的免费证书。腾讯、百度、阿里、七牛其实都是亚诚发的,但是有所区别。阿里证书的办法者是symantec basic g1,而腾讯的是trustAsia DV ssl G5.basic让我有一种很low的感觉,于是弃之。关于颁发速度,总体来说腾讯最快,如果域名在腾讯云解析,60s内就有结果,反之一小时之内也有结果。阿里需要30-90分钟左右,而七牛则是让我等了一晚上。
2.证书的安装
这一步反而是最简单的,直接把申请的证书文件放在/usr/local/nginx/conf下,然后修改下vhost.conf就OK了,嗖嗖嗖就搞定了。
这里贴下nginx的规则吧,

server {
listen 443 ssl http2;
ssl_certificate 1_cdn.49gd.com.crt;
ssl_certificate_key 2_cdn.49gd.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
server_name cdn.49gd.com;
access_log /data/wwwlogs/cdn.49gd.com.org_nginx.log combined;
index index.html index.htm index.php;
include /usr/local/nginx/conf/rewrite/wordpress.conf;
root /data/wwwroot/cdn.49gd.com;
if ($host != cdn.49gd.com) {
  return 301 $scheme://cdn.49gd.com/$request_uri;
    }

location ~ [^/]\.php(/|$) {
    #fastcgi_pass remote_php_ip:9000;
    fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
    }

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
    expires 30d;
    access_log off;
    }
location ~ .*\.(js|css)?$ {
    expires 7d;
    access_log off;
    }
}
server {
listen 80;
server_name cdn.49gd.com;
return 301 https://$host$request_uri;
}  

里面的具体信息自己调整吧,我看网上大佬们推荐return301的写法而不是rewrite,百度之后有一定道理就拿来主义了。
3.全站https改造
其实很简单,使用search and replace 插件就可以轻松解决,如果嫌麻烦也可以使用Really Simple SSL,这也是个不错的选择(不推荐强迫症使用,毕竟又多了一个插件)。

Last modification:October 23rd, 2017 at 01:04 pm
If you think my article is useful to you, please feel free to appreciate

One comment

  1. admin@ileidian.com

    膜拜大佬!~

Leave a Comment