web服務器 - Nginx可不可以理解為一個框架,上面跑的都是什么程序?
問題描述
web這塊東西真的太多了,框架N多種,還有什么web容器,web服務器,這么多名詞,對于新手來說簡直就是惡夢啊。。?;艘惶鞎r間,稍微清楚了點,
1,其實這些所謂的框架無非就是一些封裝,把接口提供給我們使用。
2,web容器么應該算是一個運行環境或者編譯器?用來產生html文件的。
3,web服務器這個概念太廣了,感覺說不清楚。。。
4,言歸正傳,Nginx應該屬于框架?還是說,它本身就是一個應用程序?還有,在Nginx上面進行開發是用C嗎?(注意,不是說Nginx本身是由什么語言開發的),而是Nginx上面跑的程序是由什么語言開發的?只能用C嗎?
5,Nginx開發到底是什么意思?如果它本身就是一個應用程序,在應用程序上面再開發一個應用程序?
以上5點不知道有哪幾點是對的,可能全錯。。。望各位大神解救一下我這個想學web的菜鳥
問題解答
回答1:我非常同意你的觀點
web容器,就是一個應用程序,利用應用層的http傳輸各種格式的數據,例如html,瀏覽器會根據數據類型分別處理
web服務器概念不大,可以通俗理解為就是一個赤裸裸的http服務,只不過這個http服務傳輸的web相關的數據
Nginx位于網絡的最頂層,屬于一個應用。C開發,它支持模塊的二次開發。
Nginx開發應該指的是插件的開發,nginx也是有http模塊的,但是這個http模塊是默認通用的模塊,如果你需要定制自己的http的模塊你就需要用C二次開發。我們有個需求就是驗證請求的合法性,我們的做法就是每個http請求的header里都會有個加密串,然后通過我們自己寫的nginx的http模塊進行反解,如果不對就block掉,這樣無效請求就不會進到我們的業務服務器里。還有一個情況也是最常見的就是用Lua寫nginx拓展,例如發布新版本做灰度發布的時候,我們想讓少部分用戶流量導入新服務器,測試沒問題的時候再導入所有流量,這個就可以用lua腳本來實現,寫一個nginx組件實現你的個性化需求,當然nginx框架本身提供一些底層的api,所以在寫插件的時候你只需要關注你的邏輯而不需要關注底層實現.
nginx開發就像你給一個類寫一個類方法一樣
回答2:框架是把開發中常用的代碼和模式提取出來,不需要程序員自己再手動造了
web容器就是虛擬機
web服務器就是處理網絡請求返回各種文本的軟件進程,比如最常見的就是碰到http請求就返回html文本
nginx是代理服務器,基于各種語言實現的web服務器進程沒有nginx也能照樣處理網絡請求以及吐回相應的文本,而nginx的作用簡單說就是把各種網絡請求篩選后扔給這些相應的web服務器進程,再把這些web服務器吐回的文本作為它處理網絡請求吐回去的文本,嗯nginx也是web服務器進程
上面說了,只要是能處理網絡socket請求的進程,nginx都可以溝通,所以nginx與什么語言開發沒關系,除非你要對nginx本身功能拓展,那么用c與lua
回答3:是一個類似Apache 的服務器,后端編程語言依賴服務器搭建運行環境,可以理解為一個服務,而不是程序
