https相对http有诸多好处,此处不列举,自行某度。本文使用的是阿里云ECS,在阿里云ECS上部署了lnmpa套件,lnmpa套件下载地址及相关指南可参考:
https://lnmp.org/
申请域名证书
阿里云提供了免费的SSL证书申请,申请成功后下载nginx版证书压缩包(如:cert-1541810405833_i.lovecto.cn_nginx.zip)。
nginx配置
管理员权限进入到“/usr/local/nginx”目录
cd /usr/local/nginx
创建cert目录用于存放证书
mkdir cert
进入到cert目录,创建网站目录,如我这里创建的是“i.lovecto.cn”,由于一个ECS上可能会部署多个网站,为了便于管理,根据网站域名进行分类管理是个不错的选择。
cd cert
mkdir i.lovecto.cn
进入到刚刚创建的网站目录“/usr/local/nginx/cert/i.lovecto.cn”,并上传上面下载的证书压缩包“cert-1541810405833_i.lovecto.cn_nginx.zip”。
cd /usr/local/nginx/cert/i.lovecto.cn
##选择压缩包上传
rz
解压zip包
unzip cert-1541810405833_i.lovecto.cn_nginx.zip
进入到对应的配置文件,由于我们使用了lnmpa,那么nginx网站的配置在“/usr/local/nginx/conf/vhost”下:
cd /usr/local/nginx/conf/vhost/
编辑对应的网站配置,比如本文的网站配置是“i.lovecto.cn.conf”
vi i.lovecto.cn.conf
输入”i”进入编辑模式,注释掉“listen [::]:80;”,在前面加上“listen 443;”,并加上SSL的相关配置,其他地方不需要修改,修改或添加的部分如下(只有端口和SSL的部分):
listen 443;
#listen [::]:80;
ssl on;
ssl_certificate /usr/local/nginx/cert/i.lovecto.cn/cert-1541810405833_i.lovecto.cn.crt;
ssl_certificate_key /usr/local/nginx/cert/i.lovecto.cn/cert-1541810405833_i.lovecto.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;
其中ssl_certificate和ssl_certificate_key就是我们刚解压出来的文件。
由于网站是从http升级到https,所以为了让http的访问也能正常跳转到https,我们在底部还需要加上:
#强制让http请求跳转到https
server{
listen 80;
server_name i.lovecto.cn;
rewrite ^(.*) https://$server_name$1 permanent;
}
保存修改的文件后退出”Esc -> : ->wq”。
cd /usr/local/nginx/sbin
./nginx -s reload
如果不能访问网站,请检查ECS是否设置了防火墙,相关配置可参考《centos7防火墙firewalld、systemctl、firewalld-cmd配置及端口添加删除》,设置防火墙允许访问443端口即可。
如果还是不能正常访问,请到阿里云检查安全组是否允许443端口访问,可参考《阿里云elasticsearch外网(公网IP)9200、9300端口访问NoNodeAvailableException问题》。
最后访问网站,正常: