2017-04-11 54 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可以用於許多其他目的。

相關問題