Nginx环境下实现全站https加密
几经折腾,本站终于实现https加密了。下面将分享我是如何实现https全站加密的。
首先需要申请一个SSL证书,我的SSL证书是在阿里云免费申请的。
申请好证书后,接下来就是如何安装SSL证书和如何在Nginx服务器端进行配置。
一、将申请的证书文件上传到服务器
使用Xshell连接到远程服务器,在 /usr/local/nginx/
目录下创建 cert
文件夹
下载申请的ssl证书(一般包含两个文件,一个.pem和一个.key),上传至刚创建的 cert
文件夹内。
二、配置 nginx.conf
首先在 /usr/local/nginx/conf/
目录下找到 nginx.conf
文件,
将 listen 80;
改为 listen 443;
其它 server_name,index,root
等都不需要改动;
然后再在server段中添加以下代码:
ssl on; ssl_certificate /usr/local/nginx/cert/214036733780684.pem; ssl_certificate_key /usr/local/nginx/cert/214036733780684.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;
特别需要注意的是:
ssl_certificate # 这一行的路径一定需要填写正确,是绝对路径(以 / 开始),就是指具体在服务器的哪个位置;214036733780684.pem,这个文件名的一段数字就是指申请的ssl证书名,不能填写错误 ssl_certificate_key` :同上。 ssl_session_timeout 5m # 不修改 ssl_ciphers # 改为自己的; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 # 不需要改动 ssl_prefer_server_ciphers on # 不需要改动。
配置完后如下:
三、单个站点 yourdomain.conf
文件的配置
在 /usr/local/nginx/conf/vhost/
目录下找到需要配置的文件,比如 www.conimi.com.conf
在server段只需修改 listen 端口为443即可;`
修改完成后,就可以通过https://www.conimi.com
和 https://conimi.com
访问了
进一步将https://conimi.com
设置301重定向跳转至https://www.conimi.com
新建一个server段配置,
server { listen 443; server_name conimi.com; rewrite ^(.*) https://www.conimi.com$1 permanent; }
就完成了 https://conimi.com 301
重定向至https://www.conimi.com
以下是配置好的 https://conimi.com 301
重定向至 https://www.conimi.com
,特别需要注意两个server段的 server_name。
至此,站点就完成了https全站加密,但是,我们很多时候会通过http://www.conimi.com
和http://conimi.com
访问,于是,我们还需要做一个301重定向,将http://www.conimi.com
和http://conimi.com
跳转至https://www.conimi.com
再新建一个server段,配置如下:
server { listen 80; server_name www.conimi.com conimi.com; rewrite ^(.*) https://www.conimi.com$1 permanent; }
于是就完成了 http://www.conimi.com
和http://conimi.com
跳转到 https://www.conimi.com
四、重启服务器。
完成以上配置后,重新启动服务器,我们就可以通过http://www.conimi.com、http://conimi.com、https://conimi.com
和https://www.conimi.com
访问了。
五、可能会出现的问题:
能通过https访问,但是浏览器还是显示为不安全,这就需要检查你的网站的资源链接如图片路径,歌曲链接,头像链接等是否为https路径,如果不是,则需要改为https,否则依旧会显示不安全。
因此在以后添加图像资源等时,特别需要注意链接是否为https。