先介绍一下HTTPS
HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。也就是说,HTTPS对保护用户在网页中输入的表单,如密码等信息更加安全。
大概讲这么多,既然需要加密,就需要解密。如何解密?解密就需要秘钥,那么我们就需要一个SSL证书,来解密被加密的内容
首先我们可以去阿里云的“云盾控制台”,找到证书服务
选择购买证书 选择下面这家公司的免费SSL证书
购买后稍作配置,提交审核,大约几分钟就能审核完成
然后选择nginx 下载证书,然后将证书(包括.pem和.key)上传到服务器的/etc/nginx/cert内,如果没有这个文件夹可以新建一个,如果想放在别的地方也行,这里只是举例说明
先列一下我的环境:
- 服务器 阿里云ubuntu 16.04
- nginx v1.10.3
- sublime text 3 编辑器
- filezila ftp工具
编辑nginx 的配置文件(xxx是你自己起的文件名)
我选择在/etc/nginx/sites-available内新建一个xxx.conf文件,内容如下所示
除了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.pem;
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;
}
有一个问题,就是人们日常在浏览器都是直接输入域名的,很少会特地输入https://
那么我们就需要对域名作重定向301转移
状态码301 永久性转移
在同一个.conf配置文件上,添加如下代码
server {
listen 80;
return 301 https://(域名)$request_uri;
}
将配置文件激活
ln -s /etc/nginx/sites-available/xxx.conf /etc/nginx/sites-enabled/xxx.conf
# sites-enabled 内不需要创建xxx.conf,因为使用了ln命令之后会自动关联创建一个conf文件
检查语法正确性
nginx -t
重启nginx服务器
nginx -s reload # 方便,推荐
# 或者
service nginx restart
nginx服务器 的https配置就完成啦,内容有什么问题和有什么疑问欢迎在下方留言~