Nginx+WordPress 全站启用Https SSL安全加密连接
2019年都过去了,难道我的站还要挂着http不加小锁头吗?
自己鼓捣一个小时就搞定了全站 SSL 安全连接,看一看我是怎么做的。
一、准备 SSL 安全证书
个人网站使用的免费证书有很多选择,本文选择使用 Let’s Encrypt 项目 获取免费证书。
部署推荐使用 Certbot ACME 客户端 ,它可以在不下线服务器的前提下自动执行证书颁发和安装。易于使用,适用于许多操作系统。官方页面对新手很友好,直接提供了命令建议。
对于CentOS 8 + Nginx 的部署,只需要几步即可完成。
1.安装 Certbot。
1 | wget https://dl.eff.org/certbot-auto |
2.获取证书
虽然 Certbot 提供了一键自动配置 Nginx
1 | sudo /usr/local/bin/certbot-auto --nginx |
但我更推荐仅获取证书,之后再手动修改配置。
1 | sudo /usr/local/bin/certbot-auto certonly --nginx |
申请到的证书会保存在以下目录
/etc/letsencrypt/live/ideajayve.club/
目录包含以下文件在内的多个文件,修改Nginx配置时会用到它们的路径。privkey.pem
: 证书私钥文件fullchain.pem
: 证书文件
3.创建自动证书续期服务
echo “0 0,12 * * * root python -c ‘import random; import time; time.sleep(random.random() * 3600)’ && /usr/local/bin/certbot-auto renew” sudo tee -a /etc/crontab > /dev/null
二、开启 Nginx 转发重定向
修改自己网站的配置文件,通常在以下目录
/etc/nginx/conf.d/
1.修改原有的 80 端口监听的 HTTP server{} 为强制重定向
修改后的 Nginx HTTP server{} 参考:
1 | # HTTP Server rewrite |
2.添加新的 443 端口监听的 HTTPS server{}
修改后的 Nginx HTTPS server{} 参考:
1 | # HTTPS Server |
将以上两段配置文本整合在同一个配置文件中,执行命令重启 Nginx。
systemctl restart nginx
现在访问主站看看,地址栏左边已经可以显示 Https 小锁头。
三、开启 WordPress 强制 SSL
修改 WordPress 根目录下的 wp-config.php, 追加以下代码:
1 | /\* 强制后台和登录使用 SSL \*/ |
现在 WordPress 的登录和后台都已开启强制使用 SSL。
四、修复 WordPress 站内图片链接
之前上传到媒体库的图片都被 WordPress 记录了带有 http:// 前缀的绝对地址,我们可以通过修改数据库来修复。或者直接修改当前使用的主题目录下的 function.php,追加以下代码:
1 | /* 替换图片链接为 https */ |
还需要关心网站内链的修改,进入 WordPress 后台仪表盘
- 修改“菜单”当中的所有“自定义链接”为相对路径;
- 修改“设置”→“常规”里的 “WordPress 地址”和“站点地址”前缀为 https://
- 好好想想,是否还有其他写下绝对地址的地方…
如果修改自定义链接后,遇到 WordPress 访问文章 404 的情况,需要修改网站 Nginx 配置。
修改并添加两部分 WordPress 重定向规则:
1 | # HTTPS Server |
保存后重启 Nginx
systemctl restart nginx
之前访问出现 404 错误的文章,现在可以正常访问了。
至此,Nginx + WordPress 全站 SSL 已经开启,访问已安全加密。
Nginx+WordPress 全站启用Https SSL安全加密连接