Nginx四層代理和七層代理的用法及區(qū)別說明
4層是指傳輸層的TCP/UDP協(xié)議
7層是指應用層的HTTP協(xié)議
代理原理
4層代理
使用NAT(Network Address Translation)技術(shù),即網(wǎng)絡地址轉(zhuǎn)換。
即請求進來的時候,nginx只修改數(shù)據(jù)包里面的目標IP、源IP、端口,然后就直接把數(shù)據(jù)包發(fā)給目標服務器(即nginx不知道請求的具體內(nèi)容),目標服務器處理完成后,發(fā)給nginx,nginx數(shù)據(jù)包再做一次類似的修改,就返回給請求的客戶端了。
7層代理
nginx讀取并解析Http請求內(nèi)容,然后將具體內(nèi)容(請求行、請求頭、空行、請求數(shù)據(jù))轉(zhuǎn)發(fā)到相應的服務器,轉(zhuǎn)發(fā)的過程是:建立和目標機器的連接,然后轉(zhuǎn)發(fā)請求,收到響應數(shù)據(jù)再轉(zhuǎn)發(fā)給請求客戶端。
總結(jié):
- 理論上4層要比7層快,因為7層代理需要解析數(shù)據(jù)包的具體內(nèi)容,需要消耗額外的cpu。但nginx具體強大的網(wǎng)絡并發(fā)處理能力, 對于一些慢連接,nginx可以先將網(wǎng)絡請求數(shù)據(jù)緩沖完,再一次性轉(zhuǎn)發(fā)給上游server(目標服務器),這樣對于上游網(wǎng)絡并發(fā)處理能力弱的服務器(比如tomcat)來說,就是將慢連接變成快連接(nginx到tomcat基本上都是可靠內(nèi)網(wǎng)),從而節(jié)省網(wǎng)絡數(shù)據(jù)緩沖時間,提供并發(fā)性能。
- 由于4層代理用的是NAT(“網(wǎng)絡地址轉(zhuǎn)換”),所以nginx不知道請求的具體內(nèi)容,所以nginx啥也干不了。用7層代理,可以根據(jù)請求內(nèi)容(請求行、請求頭、空行、請求數(shù)據(jù))做很多事情,如動態(tài)轉(zhuǎn)發(fā)代理、網(wǎng)關攔截、記錄請求日志等。
- 由于現(xiàn)在機器cpu性能都很好,4層代理并沒有明顯的性能優(yōu)勢,而7層代理在業(yè)務方面優(yōu)勢明顯,所以一般都是使用7層代理
擴展
OSI網(wǎng)絡模型(共7層)
網(wǎng)絡模型/七層模型,也稱為OSI(Open System Interconnection)參考模型,從上往下的,越往下越接近硬件,越往上越接近軟件:
上個圖方便理解和記憶

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
nginx內(nèi)部訪問特性如何實現(xiàn)靜態(tài)資源授權(quán)訪問
這篇文章主要介紹了nginx內(nèi)部訪問特性如何實現(xiàn)靜態(tài)資源授權(quán)訪問方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
如何使用Nginx和uwsgi在自己的服務器上部署python的flask項目
Nginx 是一個高性能的 HTTP 和反向代理服務,其特點是占有內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務器中表現(xiàn)較好,這篇文章主要介紹了如何使用Nginx和uwsgi在自己的服務器上部署python的flask項目,需要的朋友可以參考下2023-11-11
nginx location中多個if里面proxy_pass的方法
這篇文章主要介紹了nginx location中多個if里面proxy_pass的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11

