序言
不论是 Google 还是苹果公司,一直都在大力推动 HTTPS 以代替原有的 HTTP 协议,同时不久前据悉美国最大的成人网站也全面的将通信协议升级成了 HTTPS,不可否认的是 HTTPS 将为我们带来一个更加安全的网络环境,而作为开发者也应该直面技术发展的浪潮,毕竟顺风而行,才能飞得更远。
对于许多已经成型并在使用中的后台程序来说,将 HTTP 升级为 HTTPS 似乎是一件很麻烦的事情(说不定你要升级的程序是历史遗留下来的,而修改这种程序对所有程序员来说都是一件很不乐意的事情),所以这里介绍另一种方式来达到目的——即不修改原有后台程序,而使用 Nginx 反向代理服务器的方式。
Nginx
Nginx 本身就是一个强大的服务器,其使用广泛、配置简单,可实现负载均衡、支持高并发、及反向代理等等功能。
示例
环境的搭建不再赘述。
1、我们先准备一个 http 服务器:
node.js 的第一个 hello world , 简单吧。
2、准备 https 相关证书文件:
商用的证书需要花钱向权威的第三方机构购买,这里演示就用 openssl 自签名生成好了。( openssl 会跟随 node 的环境一起搭建,无需另外下载配置)
按下图所示步骤进行:
mykey.pem 文件和 mycert.pem 文件将会后续使用。
3、配置 Nginx 的 https 反向代理:
上图的注释已经很详细了,我们重点关注下图中红色圈内的部分,第一个红色圈内指定我们原有的后台服务器地址,第二个红色圈内配置 https 协议的证书,也就是第二步中通过 openssl 生成的两个文件,443 端口号不要改变,另外这里设置了访问此 nginx 服务器的域名(这里域名仅仅是测试用,浏览器中直接访问会当成公网域名,所以为了本地测试生效还需要修改本地 host DNS 文件,就是找到本地的 host 文件,在最后加上 127.0.0.1 www.rife-nginx.com 保存,这样浏览器就会将此域名解析到我们本地),第三个红色圈与第一个红色圈对应,设置代理的路径。
4、测试:
首先启动第 1 步中准备的 http 服务器,(然后如第 3 步中所述修改本地 host 文件),接着通过以下命令启动 nginx 服务器:
最后通过浏览器访问 www.rife-nginx.com 域名,这里会提示证书不安全,因为是我们自己生成的,没有通过第三方权威机构认证,点击继续访问即可看到 hello world 展现于我们眼前。
结束语
本文通过代理服务器的方式变向实现了 https 协议的使用,nginx 非常好用且配置简单,值得尝试,而除了使用 nginx 作为代理服务器外,我们当然可以自己用 node.js 来实现一个代理服务器,当然这次就不展开了,就写这么多吧。