国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

web - 有了CGI為什么還需要Nginx?
漂亮男人
漂亮男人 2017-05-16 17:27:17
0
7
903

查閱了資料后, 有一個(gè)籠統(tǒng)的理解, 請(qǐng)指正:

在一個(gè)計(jì)算機(jī)上運(yùn)行著一個(gè)網(wǎng)站, 有如下分工.

1. Nginx 監(jiān)聽(tīng)計(jì)算機(jī)的某一個(gè)端口(比如80), 等待用戶的request

2. 遠(yuǎn)程有一個(gè)用戶執(zhí)行了一個(gè)request, Nginx監(jiān)聽(tīng)到了, 然后把這個(gè)請(qǐng)求傳給CGI程序(比如Python的WSGI)

3. CGI程序接受請(qǐng)求, 運(yùn)行對(duì)應(yīng)的代碼, 然后返回一個(gè)response

上面的理解對(duì)嗎? 如果是對(duì)的, Nginx為什么要存在呢? 因?yàn)楹孟窬退銢](méi)有Nginx, 直接用CGI接受請(qǐng)求也是可以的樣子, 僅僅是為了負(fù)載平衡嗎?

謝謝.

漂亮男人
漂亮男人

全部回復(fù)(7)
左手右手慢動(dòng)作

蟹妖。一股知乎范兒
首先把問(wèn)題修正為為什么CGI與WebServer不能互相替代? 因?yàn)?code>CGI是一種標(biāo)準(zhǔn),Nginx則是一種應(yīng)用。兩者不是同類,所以下面用WebServer代替Nginx

CGI是一種標(biāo)準(zhǔn),Nginx則是一種應(yīng)用。
瀏覽器的角度來(lái)看,瀏覽器只負(fù)責(zé)發(fā)送請(qǐng)求,接收來(lái)自WebServer的返回結(jié)果并渲染之。對(duì)于WebServer來(lái)講,它需要做的僅僅是接收請(qǐng)求,尋找瀏覽器請(qǐng)求的文件并且發(fā)送回去。如果僅僅是這樣,世界就很完美了。
但是后來(lái)發(fā)生的事情大家都知道了。。我們不光要瀏覽靜態(tài)網(wǎng)頁(yè),我們還要登陸論壇、發(fā)帖罵人灌水踩答案點(diǎn)贊刷聲望等等。這些行為是靜態(tài)的Html沒(méi)法完成的。所以有了JS、Flash等等基于前端的交互技術(shù)。WebServer把包含了這些代碼的文件發(fā)給瀏覽器,后者把它解析稱它應(yīng)該有的樣子(或者不應(yīng)該有的樣子,比如IE6),我們可以在頁(yè)面上看看動(dòng)畫(huà)什么的,這些稱之為前段交互技術(shù)。
但是有些交互前端做不了, 比如我上次發(fā)了一個(gè)高清無(wú)碼套圖,我要看到大家的反應(yīng),點(diǎn)個(gè)贊啊樓主好人啊之類的,那么這個(gè)技術(shù)就要用到數(shù)據(jù)庫(kù),但是數(shù)據(jù)庫(kù)本身是需要另外一種語(yǔ)言來(lái)操作的,這種語(yǔ)言可以是python、prel、Ruby、PHP等等,我們稱之為動(dòng)態(tài)語(yǔ)言。他們對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪查改四大操作,并且返回結(jié)果給WebServer,后者再傳給瀏覽器。

由于有很多動(dòng)態(tài)語(yǔ)言和很多種Web服務(wù)器,他們彼此之間互不兼容,給程序員造成了很大的麻煩。那么,CGI應(yīng)運(yùn)而僧。CGI的定義是統(tǒng)一網(wǎng)關(guān)接口。從此WebServer收到后臺(tái)動(dòng)態(tài)交互請(qǐng)求就直接發(fā)給CGI,CGI發(fā)給動(dòng)態(tài)語(yǔ)言,動(dòng)態(tài)語(yǔ)言把結(jié)果發(fā)回給CGI,CGI再發(fā)回給WebServer,后面的事情你都清楚了。。。。

那么結(jié)論就是,CGI是一個(gè)翻譯層,它的功能不是直接提供結(jié)果給瀏覽器,而是翻譯來(lái)自WebServer的請(qǐng)求并轉(zhuǎn)給后臺(tái)的應(yīng)用程序,并且把執(zhí)行結(jié)果翻譯成靜態(tài)網(wǎng)頁(yè)返回給WebServer,所以,是不能互換的。

最后,寫(xiě)的比較倉(cāng)促,很多表述有不嚴(yán)謹(jǐn)?shù)牡胤?,歡迎拍磚。

習(xí)慣沉默
  • 負(fù)載均衡
  • 反向代理
  • 平滑升級(jí)
  • 擴(kuò)容災(zāi)備
  • 隱藏CGI語(yǔ)言種類
  • 記錄日志
  • gzip

太多了,我覺(jué)得仔細(xì)想想以后我還能列出至少和上面一樣長(zhǎng)的nginx的其他好處

淡淡煙草味

瀏覽器跟 Web 服務(wù)器間的通信是 HTTP 協(xié)議。瀏覽器不支持 CGI/FastCGI 協(xié)議,所以無(wú)法拋棄 Nginx 直接跟 FPM 、PHP-CGI 等通信。

巴扎黑

Nginx本質(zhì)是個(gè)web server,如果直接用CGI,那么這個(gè)CGI就成了web server,邏輯又混亂了。
CGI是為了處理動(dòng)態(tài)的邏輯。
web server僅僅是一個(gè)HTTP服務(wù)的實(shí)現(xiàn),只管收一個(gè)請(qǐng)求,然后回復(fù)一個(gè)相應(yīng)的響應(yīng)(通常是一個(gè)HTML頁(yè)面,根據(jù)請(qǐng)求的不同,也可以是其它的文件),不管任何邏輯。所有的邏輯處理,都是扔給CGI的。比如用戶登錄的驗(yàn)證等。

我想大聲告訴你

可以把Nginx想像為傳令兵,主要的活不是他做的,但是如果沒(méi)有他,
實(shí)際干活的人就是親自跑去接任務(wù)、交任務(wù)。

不是不能做,而是干活的人只愿意關(guān)心工作如何做好,
不愿意做跑腿那堆事兒,把自己的功能弄成大雜燴。

曾經(jīng)蠟筆沒(méi)有小新

你不覺(jué)得如果沒(méi)有Nginx,你列出的4點(diǎn)中的第1點(diǎn)就沒(méi)人干了嗎?

漂亮男人

靜態(tài)文件,基本都交給nginx去處理了。
動(dòng)態(tài)的請(qǐng)求的話,nginx相當(dāng)于一層路由了,想轉(zhuǎn)到哪兒就轉(zhuǎn)到哪兒,cgi只需要專注處理具體的業(yè)務(wù)邏輯即可

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板