为什么在Catalyst/Plack/Starman中使用nginx?

Eri*_*son 23 perl nginx catalyst plack starman

我正在尝试使用Plack/Starman部署我的小型Catalyst Web应用程序.所有文档似乎都表明我想将它与nginx结合使用.这有什么好处?为什么不直接在Star 80上使用Starman?

hob*_*bbs 38

它不一定特别是nginx,但是您希望某种前端服务器代理到您的应用程序服务器,原因如下:

  1. 这样您就可以在普通用户的高端口上运行Catalyst服务器,同时在端口80上运行前端服务器.

  2. 提供静态文件(普通资源,如图像,JS和CSS,以及任何类型的下载,您可能希望使用X-Sendfile或X-Accel-Redirect),而不会在下载期间占用perl进程.

  3. 如果您希望继续使用更复杂的配置(例如Edge Side Includes),或者让Web服务器直接从memcached或mogilefs(nginx可以执行的操作)或负载平衡/ HA配置服务,这会使事情变得更容易.

  • @Vijay Dancer使用的默认服务器,如果运行没有`-f`或`-k`选项的服务器脚本,则由Catalyst使用的默认服务器,一次只能处理一个请求,因此对于生产而言并不是那么好.另一方面,如果使用`-f`运行Catalyst服务器脚本,它使用的是Starman :) (3认同)

Eri*_*son 9

我在#plack上问了这个问题,得到了@nothingmuch的以下回复(我添加了格式化):

使用nginx,您可以设置负载均衡/故障转移类型的东西.如果网站很小/很简单,可能会有点过分.

我不知道Starman可能有什么缺点.也许如果你对静态文件有很多命中,nginx将使用更少的CPU /内存来处理它们,但它在典型的Web应用程序中不太可能是重要的.尽管如此,大量下载可能会让Starman工作人员陷入静态文件下载.(也许不是,使用sendfile.)这就是我能想到的全部内容.

...如果您想在没有停机的情况下进行升级,故障转移设置可能会很好.("失败"旧版本.)