Nginx 学习日志(三)配置 SSL 证书(网站由 http 转成 https)
Nginx 学习日志
Nginx 学习日志(一)简单入门
Nginx 学习日志(二)通过反向代理将不同域名映射到不同的端口
发现现在很多网站都变成了 https,并且在浏览器当中如果是 http 类型的网站,还会提示网站不安全,所以打算将自己的博客换成 https 类型。 记录一下 HTTP 升级到 HTTPS 的过程。 网上看着很简单,但实际上还是遇到了不少的问题,不过还好,最终都一一解决了
什么是 SSL 证书?
SSL 证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为 SSL 服务器证书。
参考资料: https://yq.aliyun.com/articles/602965 https://www.sohu.com/a/225956682_596521
如何获取免费的 SSL 证书?
11 种免费获取 SSL 证书的方式: https://www.toolmao.com/get-free-ssl (一篇非常详细的文章) 由于我是使用的阿里云服务器,所以是通过阿里云当中获取的免费 SSL 证书。
nginx 里面如何配置 SSL 证书?
由于我在阿里云服务器上的网站使用了 Nginx,这里主要记录 nginx 的 ssl 证书配置过程。
配置过程
第一步: 将阿里云获取到的 SSL 证书下载下来。一般是两个文件:xxxx.pem 以及 xxxx.key 第二步: 在 Nginx 的安装目录下创建 cert 目录,并将下载的文件全部拷贝进去。 第三步: 修改 nginx.conf 配置信息 将原来的 HTTP 跳转重定向到 https 上面
server {
listen 80;
server_name hjljy.cn,www.hjljy.cn;
location / {
return 301 https://www.hjljy.cn$request_uri;
}
}
配置 https 的相关跳转
server {
listen 443 ssl;
server_name www.hjljy.cn;
ssl on;
ssl_certificate ../cert/1864683_www.hjljy.cn.pem; #注意这里 指定第二步当中拷贝的文件位置
ssl_certificate_key ../cert/1864683_www.hjljy.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
}
}
第四步: 重启 nginx 在安装目录 bin 下面输入:./nginx -s reload 报如下错误 因为安装 nginx 时未加载 ssl 模块 nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:84 处理方式一:https://www.cnblogs.com/ghjbk/p/6744131.html 处理方式二:直接重新安装 nginx 在安装时记得加载 ssl 模块支持。同时记得备份重要配置文件。 最后重启 nginx 就可以了。
问题总结
主要遇到了三个问题 第一个就是 nginx 未加载 ssl 模块报错的问题 第二个就是证书文件位置的问题 第三个花费时间最长,是属于自己的博客软件的问题。排查了很久才想到这个问题。 我使用的是solo 博客软件 在软件初始化的时候,当时配置的网络地址是 http 类型的,导致在更换到 https 之后,部分静态资源无法获取到,存在资源降级的问题(就是开始是 https 的连接类型,然后里面有一些是 http 类型的连接,这部分的静态资源获取不到)。重新配置重启一下就好了。