一个关于前端、产品、设计、绘画的情侣博客

整站启用 https 访问

其实早在3年前就有这个想法,不过由于拖延症与网站访问的人很少就一直放着,直到最近 iOS 开始强制使用 https 以及做小程序时也要求请求都必须是 https。觉得是时候踩下坑。

可能是以前早就了解过流程,操作过程异常顺利,大概半小时就完成了,当然免费的SSL证书是一个月前就已经申请好了。

SSL 证书申请

本站使用阿里云ECS,在后台申请一下免费的赛门铁克,很容易就通过,然后就会得到证书文件。

服务端布署

修改 nginx.conf 配置,由于想全站开启,所以加了规则将 http 下的请求全部重定向到 https 上,以下是核心配置。修改后重启下 nginx 服务即可。另外如果使用类似 WDCP 等管理平台,记得在防火墙设置通过 443 端口。

# http 重定向到 https
server {
    listen 80;
    server_name www.sawlove.com sawlove.com;
    rewrite ^ https://$server_name$request_uri permanent;
}

# https 配置
server {
    listen 443 ssl;
    server_name www.sawlove.com;
    root /www/web/www_sawlove_com/public_html;
    index  index.html index.php index.htm;
    ssl_certificate   /www/nginx/cert/www_sawlove_com.pem; #pem文件路径
    ssl_certificate_key  /www/nginx/cert/www_sawlove_com.key; #key文件路径
}

WordPress 配置

到这里基本上已经完成了,不过本站遇到两个问题:

  • 访问站点首页变成直接下载文件
  • 站点内页样式与图片均无法显示

第一个问题起初想的是 rewrite 或 php 文件的问题,不过把 rewrite 删除以及将测试将文章页也改为 php 却正常,后面换台电脑访问确定是缓存原因;第二个问题一下子就能看出是资源协议问题,所以将七牛的 cdn 关了(默认的 https 域名访问很慢,自定义域名的 https 很贵…),然后进入 phpmyadmin 执行 sql 语句批量替换原来的 http 协议。

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.sawlove.com/', 'https://www.sawlove.com/');

UPDATE wp_posts SET guid = replace(guid, 'http://www.sawlove.com/', 'https://www.sawlove.com/');

UPDATE wp_options SET option_value = replace(option_value, 'http://www.sawlove.com/', 'https://www.sawlove.com/');

UPDATE wp_comments SET comment_author_url = replace(comment_author_url, 'http://www.sawlove.com/', 'https://www.sawlove.com/');

关于作者

Milly

擅长 Adobe 旗下软件,Ai、Fw、Fl、Br、Ae、Pr、Id 等的安装与卸载,精通 CSS、JavaScript、PHP 等单词的拼写。「从个性签名被模仿回忆我的十年互联网生涯」https://www.sawlove.com/ten-years-internet-life.html

添加评论

由 Milly
一个关于前端、产品、设计、绘画的情侣博客

分类

文章归档