1.简介
什么是Https?简单地说就是http的一个安全版本。HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
2.证书申请
可以在阿里云或腾讯云上申请一个SSl证书(如果是个人用户-都有个人单域名免费版),
如果企业还是在权威机构,一般需要购买证书。一般申请了证书需要审核完毕后就可以下载证书文件了。
以阿里云为例
3.安装SSL模块
使用Nginx配置SSL证书需要模板支持。若未安装请参考:传送门
4.配置Nginx
接下来我们配置Nginx.conf,将下载的证书和Key的所在位置配置到配置文件上。具体配置如下
创建配置 示例目录:/home/nginx/conf/nginx_ssl.conf
#定义Nginx运行的用户和用户组(默认不添加,启动后显示-nobody)
user root;
worker_processes 1; # Nginx 进程数,一般设置为和 CPU 核数一样
events {
worker_connections 1024; # 每个进程允许最大并发数
}
http {
default_type application/octet-stream; # 默认文件类型
sendfile on; # 开启高效传输模式
keepalive_timeout 65; # 保持连接的时间,也叫超时时间,单位秒
charset utf-8; # 设置编码格式
server {
listen 443 ssl; #监听443端口(https默认端口)
server_name www.xxx.com; #填写绑定证书的域名
ssl_certificate /home/xxx/xxx.crt; #填写你的证书所在的位置
ssl_certificate_key /home/xxx/xxx.key; #填写你的key所在的位置
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #套件配置
ssl_prefer_server_ciphers on;
location / {
root /home/xxx/ ; #填写你的你的站点目录
index index.html index.htm;
}
}
}
5.重启服务器
下面我们进行服务器的重启,在重启之前先检验配置文件是否有错误
cd /usr/local/nginx/sbin
#检测配置
nginx -t -c /home/nginx/conf/nginx_statis.conf
若没有报错则启动
./nginx -c /home/nginx/conf/nginx_ssl.conf
访问地址示例:https://www.xxx.top
6.可选配置
6.1 HTTP请求转发到HTTPS
添加如下配置到nginx配置,这样访问 http也会默认跳转到https了
server {
listen 80;
server_name www.xxx.com;#填写绑定证书的域名
rewrite ^ https://$http_host$request_uri? permanent; # 将http转到https
}
重启指定配置命令
./nginx -s reload -c /home/nginx/conf/nginx_ssl.conf
7.常见错误
7.1unknown directive ssl
出现原因以及解决方案, 详见:传送门