Nginx用于Node JS应用程序中的身份验证和授权

时间:2015-03-10 05:00:53

标签: node.js express nginx

我正在使用expressJS在nodejs中开发app并进行性能优化,我决定将Nginx与NodeJS一起使用(根据我的结论,在阅读了很多关于Nginx + NodeJS的文章之后)。
我已经为Nginx和NodeJS划分了如下任务:

Nginx的

  1. 提供静态文件
  2. 验证
  3. 授权
  4. 的NodeJS

    1. 使用数据库交互进行动态API处理
    2. 以上述方式设计应用程序是否好主意?
      如果是,那么如何使用Nginx处理Node JS应用程序中的身份验证和授权?
      如果没有那么在NodeJS app中处理负载的更好方法是什么?

1 个答案:

答案 0 :(得分:3)

你的概念存在根本缺陷。 Nginx的目的很快,通过http提供内容。将nginx放在node.js的前面并不能提供任何性能改进。 Nginx可以用作负载均衡器,在几台主机之间平均分配流量,但除了它非常高效之外,它本身不提供任何性能优势。这就是说Nginx不是为了处理授权/认证,除了可能是http basic auth。

您应该编写自己的逻辑来处理身份验证和授权。要扩展,您应该无状态地编写代码,以便可以跨多个服务器运行。因此,您应该将会话数据存储在诸如memcache之类的位置,或者使用类似JWT的内容创建无状态系统。

此外,您不应该使用node.js提供内容。 Nginx在这方面更快。因此,只提供带有Node.js的模板,允许Nginx缓存并提供静态内容。此范例还允许您利用内容分发网络。这是利用nginx擅长的,提供内容的唯一真正方式。

优化不是要让事情变得超级快。当您遇到性能障碍或需要使系统更有效地防止过早扩展时,就会发生优化。