2014-02-22 59 views
0

我已經在一些項目中使用了Apache,但是我從來沒有真正深入它(或者任何服務器)最近我開始閱讀更多關於服務器,它們是如何構建的等等。Ruby服務器和CGI

我查過的服務器(紅寶石),如goliaththin展示他們的請求處理機制example。他們似乎沒有展示他們的CGI功能,我迄今爲止使用了很多。這讓我想到了以下幾點:

  • CGI是否支持所有'主要'(或嚴重)服務器(例如上面提到的那些服務器)?
  • 在請求處理中,不使用CGI和一些複雜的邏輯有多常見?如果它通常用於嚴肅的項目或小型項目?
  • CGI是否支持必須由用戶啓用或默認設置的東西?我意識到這個問題很複雜,但我們在這裏討論一般情況。 (例如Apache在默認情況下,CGI-BIN +它有一個配置文件,您可以設置其他目錄)

我意識到,這個問題包含了它的內部問題進行coupple,但是由於它們是密切相關我認爲它不違反本網站的「每個線程的一個問題」規則。

回答

0

CGI是一種死的技術,並不真正被任何人以嚴重的能力使用。由於它依賴於啓動一個處理每個請求的進程,因此效率非常低下。在20世紀90年代之前,像FastCGI或嵌入語言的Apache httpd模塊之類的替代技術,如mod_perl,mod_phpPassenger用於Ruby取代它。

如果您配置了CGI,Apache HTTP仍支持CGI,並且默認配置通常會啓用它,但出於安全原因它應該被關閉。 2014年沒有理由。

更現代的策略是使用Apache httpd或nginx作爲一個或多個持久的,具有HTTP功能的進程的代理。這比啓動CGI進程,處理一個請求並關閉它要有效得多。