2017-04-05 24 views
0

我正在通过Node.js/ExpressJs中的Double Submit Cookie构建无状态身份验证,并想知道如何最好地使所有连接都通过HTTPS。如何最好地实现所有连接的Node.js的HTTPS?

原因是我希望能够处理高流量,并且出于安全原因使用HTTPS和无状态身份验证。

  1. 我应该避免HTTPS npm依赖并在Nginx中设置反向代理服务器吗?

  2. 也许我可以配置Nginx,以便在ExpressJs中执行HTTPS而无需执行任何其他应用内设置?

回答

2

你有两个选择:

  1. 使用内置在自带的Node.js https模块(不是NPM模块)。这将处理HTTPS请求。适用于轻型应用,个人网站,开发。
  2. 在Web服务器(使用http模块)前设置代理(nginx,HAProxy等)。代理将从传入的HTTPS请求中终止SSL,然后将简单的HTTP请求代理到Web服务器。适合生产,高流量的应用程序,也需要这些代理软件提供的负载平衡。

对于玩耍,我建议去内置https模块简单。我想你不希望有数百万的请求将代理引入你的堆栈。

+0

其实我是。这就是为什么我想实现Double Submit Cookie作为无状态身份验证的原因。你为什么说代理将终止SSL?我希望服务器为所有连接强制使用HTTPS。我需要一些资源来研究这个话题。谢谢! – DarkCodeWiz

+0

@DarkCodeWiz,你列出了2个选项,他们提出了相同的建议:使用nginx代替Node.js的内置HTTPS特性。如果你需要的话,这就是我在选项2中提到的SSL终止。如果你真的想要保护所有的连接,即使多个主机甚至是进程之间的本地通信,然后在Node.js中使用HTTPS模块。出于性能原因,我会建议任何类型的代理,比如nginx,它将终止SSL并在HTTP服务器的多个进程之间分配负载。 – Eye

+0

再次感谢您。我会实现你尽我所能回答我的问题,并且稍后更新我在这里做的答案。 – DarkCodeWiz