2013-02-17 58 views
9

有什麼區別? 如果我使用net/http/fcgi包,每個請求將在新的goroutine中執行。它似乎是相同的淨/ HTTP ListenAndServe ...是不是? 有什麼優點和缺點?Golang的net/http和net/http/fcgi的區別

+2

Fcgi或cgi?你真的在問哪一個? – 2013-02-17 19:19:29

回答

12

net/http/fcgi允許您通過FastCGI協議偵聽新連接,而net/http ListenAndServe用於監聽傳入的http連接。使用FastCGI偵聽器,您需要一個位於Go進程前面的http服務器,它代理傳入連接並通過FastCGI向您的Go進程發送請求。

如果您需要在同一個端口上公開多個服務,FastCGi會很有用。你可以運行諸如Apache或Nginx之類的東西作爲前端,並通過FastCGI暴露某些URL到你的Go進程。

如果這不是你的情況,你只是想在端口上運行Go Web服務器,請堅持使用net/http

+0

謝謝!如果我想使用Go + nginx?在Go中使用net/http/fcgi更好嗎?還是將動態請求重定向到標準Go Web服務器? – Tyranron 2013-02-17 19:33:42

+0

你可以這樣做。 Nginx會做反向HTTP代理服務或FastCGI。由於Go在解析http請求方面已經非常快,我認爲只要使用Nginx的反向http代理,如果您需要多層部署選項,則更簡單。 – Daniel 2013-02-17 19:46:52