为什么要将Web应用程序作为FastCGI而不是新的Web服务器来实现?
我了解FastCGI在其他网关接口上的性能。但是,如果实现FastCGI的库已经必须经历实施安全高效的TCP服务的艰辛措施,那么为什么不将应用程序编写为Web服务器呢?前端Web服务器实施反向代理的效率低于FCGI的效率?或者是FCGI的规范比HTTP更简单?为什么要将Web应用程序作为FastCGI而不是新的Web服务器来实现?
我有一个Web服务器程序,我用FCGI程序取代。我做这件事的部分原因是因为该计划的要求。它需要在现有的Web服务器下运行,因为这样做不需要额外的配置。
另一个要求是它能够跟踪一些经常变化的状态值。现有的程序效率不高,从外部跟踪这些状态值并为每个请求重新加载它们。 FCGI程序的一个优点是它是持久的,所以它可以轮询这些状态值,并且它们将可用于每个请求。
我不需要实现任何FCGI规范,我只是使用了一个现有的FCGI库,它为我处理了与Web服务器的所有通信。与我编写的具有嵌入式Web服务器的其他应用程序相比,使用FCGI库实现一个应用程序相对简单。
FCGI的另一个优点是FCGI应用程序不需要实际驻留在Web服务器可访问的磁盘上。您可以将服务器配置为在另一台服务器上建立到FCGI应用程序实例的TCP连接。如果您处于无法直接访问Web服务器的情况,这可能非常有用。用其他方法完成同样的事情可能很麻烦,但FCGI应用程序甚至不需要修改。只需配置服务器,在FCGI主机下启动您的应用程序,您就可以开始使用了。
FCGI的另一个优点是可以将Web服务器配置为在预设数量的应用程序实例之间分配请求。如果您的Web应用程序通过同步处理每个请求来发挥最佳效果,FCGI非常理想,因为您可以将每个请求集中到一个实例中,并且该实例可以在单个循环中处理每个请求。如果您最多需要2个,3个或n个实例,则只需更改服务器上的值,即可完成此操作。
因此,FCGI不是最适合所有情况的。 FCGI最吸引人的就是你面对不寻常要求的时代。
有人投票结束这个问题 - 我想知道原因。 – andyortlieb
这是一个很好的问题,我也一直在想这个。高举的希望,有人出他们有意见。 – HurnsMobile
我也有兴趣了解。 FCGI比HTTP更简单,但不需要将完整的HTTP规范实现为服务器。我想也FCGI不太可能导致后端服务器处理满负荷的错误配置。 – voidvector