最近在写节点+ mongodb版本的灵犀微商城,所以免不了要自己去部署自己的https证书到阿里服务器、下面将实现的过程完整的给大家总结下,话不多说了,来一起看看详细的介绍吧。
, <强> HTTPS和HTTP的区别主要如下:强>
,,,,,1,https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
,,,,,2,http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
,,,,,3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80年后者是443 .
,,,,,4、http的连接很简单,是无状态的;HTTPS协议是由SSL + http协议构建的可进行加密传输,身份认证的网络协议,比http协议安全。
等了2天才拿到免费的https证书,在阿里一直是显示售罄,难道最近https普遍起来导致供不应求了。
上传了fileauth。txt到指定的目录下,几分钟后,就审核通过了,期间并没有审核电话打进来。操作部署阿里给出很详尽,复制过来就可以,不过要注意要将cert文件夹放在配置下,而不是说明上所说的nginx根目录。当你按阿里原原本本地操作,将看到这个报错,<代码> fopen:没有这样的文件或目录:fopen (“/usr/地方/nginx/conf/证书/214389510580391. pem”、“r”)错误:2006 d080:生物的例程:BIO_new_file:没有这样的文件)> 代码,也就明白是cert存在目录的问题。
<强>节点反向代理强>
位置/{ proxy_pass http://127.0.0.1:4001; proxy_set_header主机主机美元; proxy_set_header X-Real-IP remote_addr美元; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元; }
节点还是照旧跑,不关心https还是http,它由nginx完成。第1个proxy_pass是反向代理,后面3个proxy_set_header是将请求完全由mall.it577.net接管,不加上虽然能被前端请求,但是req.originUrl仍然还是会解析为http://127.0.0.1:4001,这就影响到了微信支付回调notify_url的解耦了,于是加上这3行。
从地址栏看到已经支持https了。
坑
以上的过程是很简单,基本都能配置上,说下我遇到的坑,因为我阿里预装nginx并不带https模块,所以要自己手动下载安装包再重新编译,最后复制新编译出来的nginx执行文件替换并重启服务。
nginx(紧急情况):未知指令“ssl”/usr/local/nginx/conf/nginx.conf: 123
下载相应版本的ngix压缩包
wget http://nginx.org/download/nginx-1.12.1.tar.gz
解压
焦油zxvf nginx-1.12.1.tar.gz
带参编译得到ssl模块
./configure——with-http_ssl_module 使
/usr/local/nginx/sbin/nginx - s停止
当然可以杀进程,网上搜到的是让杀死的3种方法
cp/usr/local/nginx/sbin/nginx/usr/local/nginx/sbin/nginx.bak cp。obj/nginx/usr/local/nginx/sbin/
重启nginx并重新加载之配置文件
/usr/local/nginx/sbin/nginx - c/usr/local/nginx/conf/nginx.conf/usr/local/nginx/sbin/nginx - s重载
上述踩坑参考了文章https://www.jb51.net/article/130894.htm感谢前人栽的树。
这时再在浏览器访问就看到上面给出的截图效果了,大功告成。