NGINX 配置 SSL 支持
本文最后更新于:2024年7月24日 晚上
前言
在 文章 - 腾讯云申请免费 SSL 证书 中, 我们已经申请好了 SSL 证书. 那么现在, 我们就要配置全站 SSL 了! 💪💪💪
这次的工作主要是 NGINX 的配置, 同时会有一些我的博客本身的配置.
博客本身配置更改包括: (这篇文章就先不细说了)
- 网页内链接全部从 http 改为 https(其实配置下 SITEURL, 工具会自动生成好) 并重新发布. (特别要注意, 如果有的站内 css, js 等没有用 https 就尴尬了, 会被各类浏览器拦截掉, 并提示 " 不安全的脚本 ")
- 网站有用到的第三方工具(如拨测), 把网站的地址改为 https 开头的.
NGINX 配置
首先, 创建并上传准备好的证书文件到指定目录: (crt 和 key 文件)
1 |
|
进行 nginx.conf 的 ssl 配置, 本次主要涉及到 server 块的配置更改, 如下: (具体的指令作用见注释)
1 |
|
📓 说明:
以上的某些指令, 我先大概介绍下, 后续会有文章做详细介绍.
return 301 https://$host$request_uri;
HTTP 的全部永久重定向到 https 对应的 URL/usr/share/nginx/html
静态博客的存放位置ssl_session_timeout 1d;
ssl session 超时时间为 1 天ssl_session_tickets off; #
ssl session ticket 机制, 部分版本有 bug, 视情况开启.ssl_prefer_server_ciphers on;
倾向于使用 server 端的 ciphers- HSTS 功能: 添加个 HTTP header, 告诉浏览器直接转到 https, ❗ 此功能有风险, 慎重选择. (比如你的证书过期忘记续了, 那么用户想转到 HTTP 都没办法)
ssl_stapling on;
启用 ssl OCSP stapling 功能, 服务端主动查询 OCSP 结果, 提高 TLS 握手效率/etc/nginx/default.d/*.conf;
我的博客location
配置
📓 小技巧:
火狐浏览器背后的基金会, 开源了一个非常好用的工具: ssl-config-generator
在这上边, 点一点就可以自动生成推荐的 SSL 配置了.
提一点, 如上图所示, 第二列一定要根据你的客户浏览器或客户端的版本使用情况慎重选择.
比如, 用户还在用 Windows XP, IE6, Java 6, 那么只能选择 Old.
接下来, 就是要重启 nginx 来生效了.
1 |
|
重启后, 测试发现 css js 都没有生效. 😱😱😱
因为之前 nginx 刚配置过缓存. 当时脑子没转过来, 没有第一时间意识到可能是浏览器缓存的问题. 就直接 nginx stop 再 start 了下. 结果悲催的我的网站可用性就从 100% 跌到 99.81% 了.
后来终于意识到可能是浏览器缓存的问题了, 清理了缓存后, 再启动, 终于页面显示正常, 图标也从 " 不安全 " 变成了小锁.
测试访问 http://www.ewhisper.cn, 也会被强制转到 https://www.ewhisper.cn. 完美!
我的 SSL 评级
再来介绍个好东西 - SSL Labs. 可以对你的网站进行 SSL 安全评级.
点击链接, 输入网站地址, 结果就出来了 - A+ 哈哈哈哈哈!!!
最后附上我的 完整报告