Nginx 代理后面的 C++ 守护进程的 FastCGI 或 HTTP 服务器

FastCGI or HTTP server for C++ daemon behind nginx proxy

对于通过 Web 界面访问的高性能应用程序,implement/reuse 某些 http 服务器或使用 fastcgi 是否有意义?我确信 fcgi 是正确的选择,但我遇到了 https://ef.gy/fastcgi-is-pointless 现在我不太确定..

HTTP 不允许一次处理多个会话,但这可以通过产生多个守护进程并让 nginx 充当平衡器来解决。但它可能 更容易测试。

另一方面,fcgi 似乎已经具备所有必要的高性能部分(在一个进程中多路复用请求,因此更容易实现缓存,...)。

除了更容易调试之外,HTTP 是否比 FastCGI 有任何优势?

注意:安全性不是什么大问题,因为 fcgi 或 http 将 运行 支持 nginx 代理。

充当 HTTP 服务器将迫使您实现一些与您应用的业务逻辑无关的事情。这包括但不限于:保持活动状态、分块编码、解码表单数据和许多其他大小事物。我更愿意坚持使用 fastcgi,因为它需要较少的传输层协议知识。

另一方面,使您的 C++ 应用程序成为专门的 Web 服务器(例如使用 libonion or Wt library, or even POCO)将使调试变得非常容易。两者都可以以会话感知的方式使用,并将处理细节(缓存、分块编码、传输压缩等)。我猜想(但不知道)它们的 HTTP 性能可能略低(这两个库可能都没有像 nginx 传闻的那样优化)。而且它们可能最适合几十个(或数百个)同时活跃的用户,而不是数千个(但我不知道,而且从来没有用过那么多用户......)。

也许你可能有真实的用户案例(这真的取决于应用程序实际在做什么,如果你有用户 运行 Linux 或其他一些 POSIX 系统...)

顺便说一句,如果你知道(或想学习)Ocaml,你甚至可以使用 ocsigen; if you know Scheme or some other Lisp, consider HOP; if you are willing to learn a new language consider OPA (or maybe Haxe)。所有这些野兽都能让您轻松混合服务器端和浏览器端计算。