Ruby服务器和CGI

Ruby服务器和CGI,ruby,webserver,cgi,Ruby,Webserver,Cgi,我曾在一些项目中使用过Apache,但我从未真正深入研究过它(或任何服务器),最近我开始阅读更多关于服务器的内容,它们是如何构建的,等等 我(在ruby中)查找到的服务器,例如或展示了它们的请求处理机制。他们似乎并没有炫耀他们的CGI能力,到目前为止我已经使用了很多。这让我想到了以下几点: 是否所有“主要”(或严重)服务器(例如上述服务器)都支持CGI 在请求处理中不使用CGI和一些复杂的逻辑有多普遍?如果它是常见的,那么它是用于严肃的项目还是仅用于小型项目 CGI是否支持用户必须启用的功能,

我曾在一些项目中使用过Apache,但我从未真正深入研究过它(或任何服务器),最近我开始阅读更多关于服务器的内容,它们是如何构建的,等等

我(在ruby中)查找到的服务器,例如或展示了它们的请求处理机制。他们似乎并没有炫耀他们的CGI能力,到目前为止我已经使用了很多。这让我想到了以下几点:

  • 是否所有“主要”(或严重)服务器(例如上述服务器)都支持CGI
  • 在请求处理中不使用CGI和一些复杂的逻辑有多普遍?如果它是常见的,那么它是用于严肃的项目还是仅用于小型项目
  • CGI是否支持用户必须启用的功能,还是默认设置的功能?我知道这个问题很复杂,但我们现在讨论的是一般情况。(例如,apache默认有一个CGIBIN+它有一个配置文件,您可以在其中设置其他目录)

我意识到这个问题里面包含了几个问题,但是由于它们密切相关,我认为它没有违反本网站的“每线程一个问题”规则。

CGI是一种过时的技术,任何人都不会真正使用它。因为它依赖于旋转一个进程来处理每个请求,所以效率非常低。在20世纪90年代之前,嵌入该语言的ApacheHttpD模块等替代技术,如like或for Ruby取代了它

如果您对其进行了配置,则ApacheHTTPD中仍然支持CGI,并且默认配置通常会启用CGI,但出于安全原因,应将其关闭。2014年没有理由这么做

更现代的策略是使用apachehttpd或nginx作为一个或多个持久的、支持HTTP的进程的代理。这比启动CGI进程、处理一个请求并关闭它要高效得多