2017-04-11 56 views
0

我读过一些文章,建议使用反向代理(如nginx)之前Node.js的应用程序(如一个:Advantages of a reverse proxy in front of Node.JS)。比起运行Node.js本身并且暴露它更好(至少在安全性方面)。如果我在Docker容器中运行Node.js,是否需要反向代理?

但是,运行多克尔容器内的Node.js应用程序应该避免(因为应用程序是一个容器内运行,并从主系统隔离)的安全性问题。

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

+1

很好,在大多数情况下,Nginx可用作Internet和Web应用程序之间的负载平衡器和反向代理。当然,您可以使用NodeJS解决方案来涵盖这些使用案例,但是Nginx已经过测试并且经常首选与NodeJS一起工作。 – Gntem

回答

2

每次我都得设置Nginx的代理到Docker容器,不仅对于安全方面,你提到它,是包含在泊坞窗容器自我,也方便了分布式系统通信。

在一个标准的架构,你有一个API容器,容器IDP和前端容器(假设这是一个Web应用程序)。一切都落后于Nginx。 IDP,API和前端暴露在外部流量中......但这里有趣的部分。假设您想要在不同的容器上运行附加服务(地理位置服务,ETL或其他任何服务)。该容器不需要暴露给公众。只有内部容器可以与它交谈。

在前面的场景中,请求会碰到前端,前端会将请求发送到API,API将使用IDP(内部调用)验证令牌,如果未授权,则将前端重定向到IDP 3 legged认证),或者只是返回403,并通过再次向API发送凭证来获得用户的授权(2 legged auth)。然后,如果用户需要调用任何附加服务,则所有调用都将首先通过API,或者可以将它们映射到Nginx中以直接访问服务,只需确保用户已通过身份验证/授权即可使用该服务。

我希望揭示了Nginx的特定用途的一些情况。请记住,这只是'一个'用例,但Nginx可以用于许多其他目的。

相关问题