nginx配置https 以及自动跳转
先介绍一下HTTPS
HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。也就是说,HTTPS对保护用户在网页中输入的表单,如密码等信息更加安全。
大概讲这么多,那么我们就需要一个SSL证书
首先我们可以去阿里云的“云盾控制台”,找到证书服务
选择购买证书 选择下面这家公司的免费SSL证书
购买后稍作配置,提交审核,大约几分钟就能审核完成
然后选择nginx 下载证书,然后将证书(包括.crt和.key)上传到服务器的/etc/nginx/cert内,如果没有这个文件夹可以新建一个,如果想放在别的地方也行,这里只是举例说明
进入nginx 的配置文件
除了ssl_certificate和ssl_certificate_key根据自己的情况填写路径以外,别的尽量按照下面去写
server {
listen 443 ssl;
# Add index.php to the list if you are using PHP
server_name (域名);
ssl on;
ssl_certificate /etc/nginx/cert/xxxxx.crt;
ssl_certificate_key /etc/nginx/cert/xxxxx.key;
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;
}
检查语法正确性,重启nginx服务器
这时候服务器的https已经配置完成了
但是有一个问题,就是人们日常在浏览器都是直接输入域名的,很少会特地输入https://
那么我们就需要对域名作重定向302跳转
状态码302 永久性转移
在同一个.conf配置文件上,添加如下代码
server {
listen 80;
return https://(域名)$request_uri;
}
检查一下语法,重启nginx即可