2016-08-07 45 views
3

Nginx在生產中的重要性通常基於其爲慢速客戶端提供服務的能力;在RESTful API的設置中,它似乎是生產堆棧的一個不必要的層,特別是Puma(不同於廣泛使用的獨角獸可以處理nginx工作)。沒有nginx的Puma - 同一個IP上的多個ruby應用程序:PORT

Puma可以允許多個慢速客戶端進行連接,而無需在請求事務中阻止工作人員。因此,Puma優雅地處理慢速客戶端。 Heroku建議Puma適用於您期望速度慢的客戶。 ref

如何使彪馬服務於同一個端口上的多個Ruby應用程序,而無需使用nginx的反向代理?

回答

2

你不能,彪馬只是一個網絡服務器。

在TCP/IP堆棧上,每個應用程序都被分配給一個端口,這樣接收到的打包文件就可以代理到期待它的應用程序。想象一下,如果多個應用程序位於同一個端口上。應用程序無法知道它收到的數據包是真正用於它還是用於同一端口上的另一個應用程序。

這就是我們使用代理和反向代理的原因。 Nginx作爲一個反向代理,將請求的URL解析爲一個應用程序,並將請求代理給它。它是一個單一的應用程序,它接收給定端口上的所有傳入數據包,然後將它們代理到另一個端口或套接字上的應用程序。

要在同一個端口上有多個Web服務器,你必須在它們前面有一個反向代理,比如Nginx或HAproxy。

相關問題