我当前项目使用的是阿里云的服务器,安装的centos7 X64,nginx环境,配置https的步骤在阿里云上也可找得到。
相关链接:https://help.aliyun.com/document_detail/98728.html?spm=5176.10695662.1996646101.searchclickresult.89271a7fbGWXnS
1.先获取CA证书,在nginx的配置文件nginx.conf同级,新建一个cert文件夹存放证书
2.修改nginx.conf
在下面添加一部分:
server {
listen 80;
server_name localhost;
root html;
index index.html index.htm;
location / {
}
}
添加后:
server {
listen 80;
listen 443;
server_name localhost; # localhost修改为您证书绑定的域名。
ssl on; #设置为on启用SSL功能。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain name.key; #将domain name.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 / {
}
}
重启服务器
/opt/openresty/nginx/sbin/nginx -s reload
http网址打不开
目前的话是http打不开,如果想要http和https兼容的话:注释掉 ssl on, 在listen 443 后面加上ssl,代码如下:
server {
listen 80;
listen 443 ssl;
server_name localhost; # localhost修改为您证书绑定的域名。
#ssl on; #设置为on启用SSL功能。
root html;
index index.html index.htm;
ssl_certificate cert/domain name.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain name.key; #将domain name.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 / {
}
}
http强制跳转https
server {
listen 80;
server_name localhost; #使用您证书绑定的域名替换localhost。
return 301 https://$server_name$request_uri;
}
注意
如果之前的网站是http请求,添加证书后变成htpps,那么如果再在当前网站下加载http资源(API,js, css...)那么就会报错,因为https地址中,如果加载了http资源,浏览器将认为这是不安全的资源,将会默认阻止,这就会给你带来资源不全的问题了。所以在引入资源的时候可以这样写
// 自适配写法
<script src='//www.aa.com/jquery.js'></script>
如果网站已经配置了https,我比较推荐使用https来加载资源。
网友评论