• 技术文章 >web前端 >js教程

    使用nginx + node如何部署https

    亚连亚连2018-06-19 17:43:47原创965
    这篇文章主要给大家介绍了关于利用nginx + node在阿里云部署https的步骤,文中通过图文及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。

    缘起

    最近在写node+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文件夹放在conf下,而不是说明上所说的nginx根目录。当你按阿里原原本本地操作,将看到这个报错,fopen:No such file or directory:fopen('/usr/local/nginx/conf/cert/214389510580391.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) ,也就明白是cert存在目录的问题。

    node反向代理

    location / {
       proxy_pass http://127.0.0.1:4001;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }

    node还是照旧跑,不关心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执行文件替换并重启服务。

    报错,提示找不到ssl模块

    nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:123

    下载相应版本的ngix压缩包

    wget http://nginx.org/download/nginx-1.12.1.tar.gz

    解压

    tar zxvf nginx-1.12.1.tar.gz

    带参编译得到ssl模块

    ./configure --with-http_ssl_module
    
    make

    停止nginx

    /usr/local/nginx/sbin/nginx -s stop

    当然可以kill进程,网上搜到的是让kill的3种方法

    替换旧nginx

    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    cp ./objs/nginx /usr/local/nginx/sbin/

    重启nginx并重新加载conf配置文件

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    /usr/local/nginx/sbin/nginx -s reload

    上面是我整理给大家的,希望今后会对大家有帮助。

    相关文章:

    在js中如何实现二级联动

    webpack对样式该如何处理?

    在js中如何生成word图片

    在jQuery中有关于库的引用方法有哪些

    以上就是使用nginx + node如何部署https的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:在JavaScript中如何实现AOP 下一篇:使用Vue如何实现数字键盘组件
    20期PHP线上班

    相关文章推荐

    精选22门好课,价值3725元,开通VIP免费学习!• 简单介绍JavaScript “原型“与“原型链“• 20个JS技巧,助你提升工作效率,再也不做加班人!• 聊聊Node.js中的进程、线程、协程与并发模型• JavaScript知识点总结之DOM• JavaScript怎么处理树状结构数据的增删改查
    1/1

    PHP中文网