这篇文章是下面博客的进一步搭建HTTPS server的博客
// angular nodejs express mongodb apache,模拟线上部署(HTTP server)
https://blog.csdn.net/liangxw1/article/details/79073521
环境
Linux(Centos): Apache(httpd-2.4.29), Nodejs(8.11.1),Angular4.6
http://google.com
http://www.google.com
https://google.com
https://www.google.com
在前后端分离的基础上,网站要支持 https,对于MEAN应用,要考虑一下几点
- Angular运行在linux的Apache的80端口下,用户能感知到的只是Apache的80端口
- Nodejs运行在同一Linux的3000端口下(或者说不是同一个linux的其他端口),从Angular的http请求到Apache做代理,映射到nodejs的3000端口的过程,对用户来说是透明的,用户感知不到;这里从Apache的80映射到nodejs的3000的过程,也就是需要Nodejs需要支持HTTPS访问,这里Nodejs是否需要 HTTPS的支持,换句话说,这里肯定(或者说99.99)都是内网的映射情况和通信(或者是同一个Linux主机的不同端口的通信),是否需要配置 HTTPS,有待考量,当然从严格的安全的角度来说,提供HTTPS是有必要的,
- 综合1,2,需要提供https访问的地方有Apache的80端口和Nodejs的443端口
以用户访问google为例,不同的url访问方式有如下的处理,不同的网站不尽相同,比如百度的,csdn的不完全一样,但是大体思路一致,
这里的处理归于类似Apache的前端服务器,所以在Apache服务器需要做如下的需求的配置
同时需要在Apache服务器配置 https的80端口访问能力
google.com 307 Internal Redirect –> Location: https://www.google.com/
www.google.com 307 Internal Redirect –> Location: https://www.google.com/
http://www.google.com 307 Internal Redirect –> Location: https://www.google.com/
https://google.com 301 Moved Permanently –> Location: https://www.google.com/
https://www.google.com 200 OK
在nodejs端支持https访问,只需要按照nodejs api文档,用到https模块即可实现,
https://nodejs.org/api/https.html
// Nodejs+Express创建HTTPS服务器
https://blog.csdn.net/liangxw1/article/details/80666427
自己生成的证书或者购买的证书,个人理解,可以同时用在配置https的Apache服务器上和配置https的Nodejs server上
[Nodejs+Express创建HTTPS服务器]这里已经介绍如何在nodejs配置https访问,下面主要说说在Apache server上配置类似于上面访问google的配置。