最近突然好多朋友要弄全站https,特意也整理了一下设置的方法
一、准备证书
首先科普一下SSL证书类型
按审核方式分类:
1.域名验证DV SSL证书
2.企业验证OV SSL证书
3.企业增强/扩展验证EV SSL证书
按照功能分类
1.多域名 UCC/SAN SSL证书
2.强加密SGC SSL证书
3.通配符Wildcard SSL证书
4.代码签名Code Signing SSL证书
申请证书过期不同代理商都不一样,自己领悟去吧,实验使用的是阿里云申请的免费DV SSL证书,只需要免费购买,填补一下资料即可。
二、配置Nginx
1.将下载的ssl证书上传到服务器
2.#mkdir /opt/nginx/conf/key
将对应server配置为如下
server {
server_name test.test.cn;
access_log logs/host.access.log main;
listen 80;
listen 443 ssl;##开放两个端口为了兼容http
ssl_certificate /opt/nginx/conf/key/test.test.cn.pem;
ssl_certificate_key /opt/nginx/conf/key/test.test.cn.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;
location / {
proxy_pass http://upstream_group;
proxy_set_header Host $http_host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100m;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'POST, GET, OPTIONS,PUT,DELETE';
add_header 'Access-Control-Allow-Headers' '*,token';
}
}
这样既可开启https。
三、设置强制http跳转https
1.虽然前面已经实现了https,但是你回发现登录后还是跳转回http,这时候需要开启全站https的话,则需要将http请求强制转为https
加入如下配置
if ($server_port = 80) {
return 301 https://$server_name$request_uri;
}