gpt4 book ai didi

node.js - 如果我在 Docker 容器中运行 Node.js,是否需要反向代理?

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:44 25 4
gpt4 key购买 nike

我读过一些建议在 Node.js 应用程序之前使用反向代理(例如 nginx)的文章(例如: Advantages of a reverse proxy in front of Node.JS )。这比运行 Node.js 本身并公开它更好(至少在安全性方面)。

但是,在 Docker 容器内运行 Node.JS 应用程序应该可以防止安全问题(因为该应用程序在容器内运行并且与主机系统隔离)。

所以,我的问题是:在 Docker 容器中运行 Node.js 应用程序时使用反向代理有好处吗?如果是这样,它如何改进我的应用程序?

最佳答案

每次我必须设置 Nginx 来代理 Docker 容器时,不仅是出于安全方面的考虑(正如您提到的,安全方面是自包含在 Docker 容器中),而且也是为了促进分布式系统通信。

在标准架构中,您有一个 API 容器、一个 IDP 容器和一个前端容器(假设这是一个 Web 应用程序)。一切都在 Nginx 的背后。 IDP、API 和前端暴露于外部流量......但有趣的部分来了。假设您希望在不同的容器上运行附加服务(地理定位服务、ETL 或其他服务)。该容器不需要向公众公开。只有内部容器可以与其对话。

在前面的场景中,请求将到达前端,前端会将请求发送到 API,API 将使用 IDP(内部调用)验证 token ,如果未授权,则将前端重定向到 IDP (3腿式身份验证)或仅返回 403 并通过再次将凭据发送回 API 来让用户重新身份验证(2 腿式身份验证)。然后,如果用户需要调用任何其他服务,所有调用都将首先通过 API,或者可以在 Nginx 中映射以直接访问服务,只需确保用户经过身份验证/授权即可使用该服务。

我希望这能让您对 Nginx 的特定用法有所了解。请记住,这只是“一个”用例,但 Nginx 可以用于许多其他目的。

关于node.js - 如果我在 Docker 容器中运行 Node.js,是否需要反向代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43349268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com