我正在使用expressJS在nodejs中开发app并进行性能优化,我决定将Nginx与NodeJS一起使用(根据我的结论,在阅读了很多关于Nginx + NodeJS的文章之后)。
我已经为Nginx和NodeJS划分了如下任务:
Nginx的
的NodeJS
以上述方式设计应用程序是否好主意?
如果是,那么如何使用Nginx处理Node JS应用程序中的身份验证和授权?
如果没有那么在NodeJS app中处理负载的更好方法是什么?
答案 0 :(得分:3)
你的概念存在根本缺陷。 Nginx的目的很快,通过http提供内容。将nginx放在node.js的前面并不能提供任何性能改进。 Nginx可以用作负载均衡器,在几台主机之间平均分配流量,但除了它非常高效之外,它本身不提供任何性能优势。这就是说Nginx不是为了处理授权/认证,除了可能是http basic auth。
您应该编写自己的逻辑来处理身份验证和授权。要扩展,您应该无状态地编写代码,以便可以跨多个服务器运行。因此,您应该将会话数据存储在诸如memcache之类的位置,或者使用类似JWT的内容创建无状态系统。
此外,您不应该使用node.js提供内容。 Nginx在这方面更快。因此,只提供带有Node.js的模板,允许Nginx缓存并提供静态内容。此范例还允许您利用内容分发网络。这是利用nginx擅长的,提供内容的唯一真正方式。
优化不是要让事情变得超级快。当您遇到性能障碍或需要使系统更有效地防止过早扩展时,就会发生优化。