随着谷歌浏览器的升级, 并且将所有的 HTTP 协议网站标注为不安全和 DNS 劫持越来越猖狂, 决定将 http 协议改成 https 协议, 当然最主要还是有免费的可以使用, 用 https, 首先就得知道下 SSL 证书:
SSL 证书需要向国际公认的证书证书认证机构(简称CA,Certificate Authority)申请。
CA 机构颁发的证书有3种类型:
域名型SSL证书(DV SSL):信任等级普通,只需验证网站的真实性便可颁发证书保护网站;
企业型SSL证书(OV SSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;
增强型SSL证书(EV SSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高
对于个人博客来说,只需要申请一个域名型SSL证书(DV SSL)就足够了, 这里推荐个腾讯云免费 GeoTrust DV SSL 证书
, 申请链接: https://console.qcloud.com/ssl , 申请过程很简单, 就不在赘述了.
申请成功后, 在证书管理里可以下载到相关证书, 里面有 3 个文件夹, 分别对应 IIS, Apache 和 Nginx 的证书文件
因为本站用的是 Vue2 的 SSR 加上 Nginx 的反向代理, 所以这里就以此为例子:
1, 将 Nginx 文件夹下的两个证书文件上传到 nginx 配置文件夹, 即和 nginx.conf 在同一目录
2, 修改虚拟主机的配置文件:
server {
listen 443;
server_name yourdomain.com;
ssl on;
ssl_certificate 1_www.xxx.com_bundle.crt; #这里改成对应的文件名
ssl_certificate_key 2_www.xxx.com.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 ~ ^/(static|upload)/ {
root /home/web/your-web-dir/dist;
expires 30d;
} # 配置静态文件直接走 nginx, 不走反向代理
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://127.0.0.1:8080;
}
}
3, 添加 http 自动转向 https
server {
listen 80;
if ($scheme = http) {
return 301 https://$host$request_uri;
}
}
4, 最终配置
server {
listen 80;
listen 443;
server_name yourdomain.com;
ssl on;
ssl_certificate 1_www.xxx.com_bundle.crt; #这里改成对应的文件名
ssl_certificate_key 2_www.xxx.com.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;
if ($scheme = http) {
return 301 https://$host$request_uri;
}
location ~ ^/(static|upload)/ {
root /home/web/your-web-dir/dist;
expires 30d;
} # 配置静态文件直接走 nginx, 不走反向代理
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://127.0.0.1:8080;
}
}
不是用反向代理的, 一般只要改下 location / {}
里的配置就行了.
5, 保存配置文件
6, nginx -t
测试下配置文件是否正确
7, nginx -s reload
重启 Nginx
8, 输入自己的域名, 如果能正常跳转到 https, 并且能打开网站, 说明配置成功
注意: 配置 SSL 后, 网站里所有静态资源都必须以 https 为协议, 不能用 http 协议的 cdn 地址