Nginx 学习日志(三)配置 SSL 证书(网站由 http 转成 https)

本贴最后更新于 2123 天前,其中的信息可能已经物是人非

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 模块
<font color=red size=3>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 类型的连接,这部分的静态资源获取不到)。重新配置重启一下就好了。

参考资料

Nginx/Tengine 服务器安装 SSL 证书

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    313 引用 • 547 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...