我正在尝试使用Plack / Starman部署我的小型Catalyst Web应用程序。所有文档似乎都表明我想将它与nginx结合使用。这有什么好处?为什么不直接在端口80上使用Starman?
答案 0 :(得分:38)
它不一定特别是nginx,但是你需要某种前端服务器代理你的应用服务器,原因如下:
这样您就可以在普通用户的高端口上运行Catalyst服务器,同时在端口80上运行前端服务器。
提供静态文件(普通资源,如图像,JS和CSS,以及任何类型的下载,您可能希望使用X-Sendfile或X-Accel-Redirect),而不会占用perl进程在下载期间。
如果您希望转到更复杂的配置,例如边缘包括,或者让web服务器直接从memcached或mogilefs(nginx可以做的事情)或负载平衡/ HA配置服务。
答案 1 :(得分:9)
我在#plack上问了这个问题并从@nothingmuch得到了以下回复(我添加了格式化):
使用nginx可以设置 负载均衡/故障转移类型的东西。如果 该网站可能很小/很简单 矫枉过正。
我不知道 Starman可能有的缺点。 也许如果你有很多点击率 静态文件nginx会少用 用于处理它们的CPU /内存,但它是 不太可能是重要的 典型的网络应用。大量下载可能 将Starman worker绑定为静态文件 下载虽然。 (也许不是,有 sendfile。)这就是我能做的一切 考虑到。
...故障转移设置可以 如果你想进行升级,那就太好了 没有停机时间。 (“失败”旧 版本)。
答案 2 :(得分:3)
另一个原因是,轻量级前端服务器(甚至是Apache可以)比典型的Starman进程(几MB到几十或超过100 MB)每个连接消耗的内存要少得多。由于连接已打开一段时间,特别是如果您想使用保持活动连接,您可以使用更少的RAM来支持大量的同时连接。仅确保代理前端服务器的缓冲区大小足以从后端立即加载典型的HTTP响应。然后后端可以自由处理下一个请求。