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