如今,运行 Perl Web 应用程序的一个非常流行的选择似乎是在 nginx 网络服务器后面,该服务器将请求代理到 FastCGI 守护程序或启用 PSGI 的网络服务器(例如 Starman)。
有很多关于为什么通常会这样做的问题(例如,为什么将 nginx 与 Catalyst/Plack/Starman 一起使用?),答案似乎适用于两种情况(例如,允许 nginx 提供静态内容,轻松重启应用程序服务器,负载平衡等)
但是,我对使用 FastCGI 与反向代理方法的优缺点特别感兴趣。似乎 Starman 被广泛认为是最快和最好的 Perl PSGI 应用程序/Web 服务器,我很难看到使用 FastCGI 的任何优势。这两种方法似乎都支持:
- UNIX 域套接字以及 TCP 套接字
- fork/流程管理器样式的服务器以及基于事件的非阻塞(例如 AnyEvent)服务器。
- 信号处理/优雅重启
- PSGI
同样,任一选项的 nginx 配置都非常相似。
那么为什么你会选择其中之一呢?