我正在尝试使用Plack/Starman部署我的小型Catalyst Web应用程序。所有文档似乎都建议我与nginx一起使用。这样做的好处是什么?为什么不直接在80端口上使用Starman?
这里不一定特指nginx,但你需要某种类型的前端服务器代理来连接你的应用服务器,原因如下:
这样你就可以将Catalyst服务器作为普通用户在高端口上运行,同时在80端口上运行前端服务器。
可以在不占用perl进程的情况下服务于静态文件(例如图片、JS、CSS等常规资源以及任何您可能想使用X-Sendfile或X-Accel-Redirect下载的文件)。
如果你想要进行更复杂的配置,比如使用Edge Side Includes功能,或者直接从memcached或mogilefs中提供web服务(这两个功能nginx都可以实现),或者进行负载平衡/高可用性配置等,使用前端服务器作为代理会更加容易。
使用 nginx,您可以设置负载均衡/故障转移等。如果网站规模较小/简单,则可能过度设计。
我不知道 Starman 可能会有什么缺点。也许如果您有许多静态文件点击,nginx 将使用更少的 CPU/内存来处理它们,但在典型的 Web 应用程序中,这不太可能有显著影响。大型下载可能会占用 Starman 工作进程进行静态文件下载。(也许不需要,因为有 sendfile。)这就是我能想到的全部。
...如果您想进行无停机时间的升级,故障转移设置可能很好用。(“失败”旧版本。)