Nginx环境下实现全站https加密

Posted Torrk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx环境下实现全站https加密相关的知识,希望对你有一定的参考价值。

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.comhttp://conimi.com访问,于是,我们还需要做一个301重定向,将http://www.conimi.comhttp://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.comhttp://conimi.com 跳转到 https://www.conimi.com

四、重启服务器。

完成以上配置后,重新启动服务器,我们就可以通过http://www.conimi.com、http://conimi.com、https://conimi.comhttps://www.conimi.com访问了。

五、可能会出现的问题:

能通过https访问,但是浏览器还是显示为不安全,这就需要检查你的网站的资源链接如图片路径,歌曲链接,头像链接等是否为https路径,如果不是,则需要改为https,否则依旧会显示不安全。

因此在以后添加图像资源等时,特别需要注意链接是否为https。


以上是关于Nginx环境下实现全站https加密的主要内容,如果未能解决你的问题,请参考以下文章

[转帖]nginx配置ssl加密(单/双向认证部分https)

两款插件快速实现,wordpress全站开启https

全站 https搭建discuz并实现lb01和lb02keepalived高可用故障转移

HTTPS 全站加密可能是大势所趋

基于nginx建立CA实现https加密连接

HTTPS加密越来越流行,为何要加密?