nginx反向代理

反向代理

反向代理圖示

優(yōu)勢(shì)
1.隱藏真實(shí)服務(wù)器
2.便于橫向擴(kuò)充后端動(dòng)態(tài)服務(wù)
3.動(dòng)靜分離,提升系統(tǒng)健壯性

動(dòng)靜分離

動(dòng)靜分離是指在web服務(wù)器架構(gòu)中请契,將靜態(tài)頁(yè)面與動(dòng)態(tài)頁(yè)面或者靜態(tài)內(nèi)容接口和動(dòng)態(tài)內(nèi)容接口分開(kāi)不同系統(tǒng)訪問(wèn)的架構(gòu)設(shè)計(jì)方法,進(jìn)而提升整個(gè)服務(wù)訪問(wèn)性能和可維護(hù)性

使用Nginx作為反向代理時(shí)支持的協(xié)議

nginx支持的協(xié)議

用于定義上游服務(wù)的upstream模塊

解釋?zhuān)耗J(rèn)已被編譯進(jìn)nginx均抽,禁用需要通過(guò)--with-http_upstream_module
語(yǔ)法:upstream name { ... }
默認(rèn)值:無(wú)
上下文:http

1.server
語(yǔ)法:server address [ parameters ];
默認(rèn)值:無(wú)
上下文:upstream


parameters可選值

2.keepalive
解釋?zhuān)合拗泼總€(gè)worker子進(jìn)程與上游服務(wù)器空閑長(zhǎng)連接的最大數(shù)量
語(yǔ)法:keepalive connections尚洽;
上下文:upstream
示例:keepalive 16;

3.keepalive_requests
解釋?zhuān)簡(jiǎn)蝹€(gè)長(zhǎng)連接可以處理的最多HTTP請(qǐng)求個(gè)數(shù)
語(yǔ)法:keepalive_requests number;
默認(rèn)值:keepalive_request 100;
上下文:upstream

4.keepalive_timeout
解釋?zhuān)嚎臻e長(zhǎng)連接的最長(zhǎng)保持時(shí)間
語(yǔ)法:keepalive_timeout time;
默認(rèn)值:keepalive_timeout 60s;
上下文:upstream

5.queue(只有在nginx專(zhuān)業(yè)版上可用)
語(yǔ)法:queue number [timeout=time];
默認(rèn)值:無(wú)
上下文:upstream
示例::queue 100 timeout=30s;

upstream back_end {
        server 127.0.0.1:8080 weight=3 max_conns=1000 fail_timeout=10s;max_fails=2;
        keepalive 32;
        keepalive_requests 50;
        keepalive_timeout 30s;
}

http_proxy模塊

1.proxy_pass指令
解釋?zhuān)河蒱ttp_proxy模塊提供(ngx_http_proxy_module)夷家,默認(rèn)已被編譯進(jìn)nginx幕侠,禁用需要通過(guò)--without-http_proxy_module
語(yǔ)法:proxy_pass URL;
默認(rèn)值:無(wú)
上下文:location帝美, if, limit_except
示例一:proxy_pass http://127.0.0.1:8080
示例二:proxy_pass http://127.0.0.1:8089/proxy
URL參數(shù)原則
-URL必須以http或https開(kāi)頭
-URL中可以攜帶變量
-URL中是否帶URI橙依,會(huì)直接影響發(fā)往上游請(qǐng)求的URL

upstream back_end {
        server 192.168.184.20:8080
}
server {
        listen 80;
        server_name localhost;
        location /proxy {
                proxy_pass http://back_end/proxy;
        }
}

proxy_pass用法常見(jiàn)誤區(qū)
-proxy_pass代理的URL后面到底加不加/?
1.不帶/意味著Nginx不會(huì)修改用戶(hù)URL硕旗, 而是直接透?jìng)鹘o上游的應(yīng)用服務(wù)器
2.帶/意味著Nginx會(huì)修改用戶(hù)URL窗骑, 修改方法:將location后的URL傳遞給上游服務(wù)器

location /bbs/ {
        proxy_pass http://127.0.0.1:8080;
}
#用戶(hù)請(qǐng)求的URL:/bbs/abc/test.html
#請(qǐng)求到達(dá)Nginx的URL:/bbs/abc/test.html
#請(qǐng)求到達(dá)上游應(yīng)用服務(wù)器的URL:/bbs/abc/test.html
#如果proxy_pass http://127.0.0.1:8080/,則請(qǐng)求到達(dá)上游應(yīng)用服務(wù)器的URL為/abc/test.html

代理場(chǎng)景下Nginx接收用戶(hù)請(qǐng)求包體的處理方式

解釋?zhuān)航邮瞻w有兩種方式漆枚,一種是接受完全部包體再發(fā)送到上游服務(wù)器创译,一種是一邊接收包體一邊發(fā)送
1.proxy_request_buffering on | off;
默認(rèn)值:on
上下文:http, server, location
含義:是否開(kāi)啟緩存區(qū)域,開(kāi)啟后會(huì)接收完全部包體再發(fā)送到上游服務(wù)器墙基。
適應(yīng)場(chǎng)景:吞吐量要求高软族,上游服務(wù)并發(fā)處理能力低。如果不開(kāi)啟残制,則響應(yīng)更及時(shí)立砸,可以減少Nginx的磁盤(pán)IO

2.client_max_body_size size;
默認(rèn)值:1M;
上下文:http, server, location
含義:Nginx可以處理的請(qǐng)求體的大小初茶,超過(guò)大小則返回錯(cuò)誤

3.client_body_buffer_size size;
默認(rèn)值:8k | 16k (分別對(duì)應(yīng)32位和64位系統(tǒng))
上下文:http, server, location
含義:緩存區(qū)域的大小颗祝,如果請(qǐng)求體小于緩存區(qū)域,直接放在內(nèi)存中恼布,如果大于緩存區(qū)域螺戳,就放在文件中。

4.client_body_in_single_buffer on | off;
默認(rèn)值:off折汞;
上下文:http, server, location
含義:是否把文件放在一個(gè)連續(xù)的內(nèi)存空間中倔幼,效率更高

5.client_body_temp_path path [ level1 ] [level2 ] [level3]
默認(rèn)值:client_body_temp;
上下文:http, server, location
含義:請(qǐng)求體大于緩存區(qū)域,在磁盤(pán)中的存放路徑

6.client_body_in_file_only on | clean | off;
默認(rèn)值:off爽待;
上下文:http, server, location
含義:請(qǐng)求體是否只放在文件中儲(chǔ)存损同,clean和on意思一樣,但是樣鸟款,但是會(huì)在請(qǐng)求完成后清除文件揖庄。

7.client_body_timeout time;
默認(rèn)值:60s;
上下文:http, server, location
含義:連接成功后,長(zhǎng)時(shí)間沒(méi)有請(qǐng)求會(huì)在指定時(shí)間關(guān)閉連接

代理場(chǎng)景下Nginx如何更改發(fā)往上游的用戶(hù)請(qǐng)求

1.proxy_method method;
默認(rèn)值:無(wú)
上下文:http, server, location
含義:修改請(qǐng)求的方法

2.proxy_http_version 1.0 | 1.1;
默認(rèn)值:1.0欠雌;
上下文:http, server, location
含義:修改請(qǐng)求的http版本蹄梢,注意1.0不支持keepalive方法

3.proxy_set_header field value;
默認(rèn)值:proxy_set_header Host $proxy_host;
proxy_set_header Conncetion close;
上下文:http, server, location
含義:修改請(qǐng)求頭參數(shù),注意,要想打開(kāi)keepalive禁炒,需要注定指定Connction為keepalive

4.proxy_pass_request_header on | off;
默認(rèn)值:on而咆;
上下文:http, server, location
含義:是否傳遞請(qǐng)求頭信息

5.proxy_set_body value;
默認(rèn)值:無(wú)
上下文:http, server, location
含義:設(shè)置請(qǐng)求體信息

6.proxy_pass_request_body on | off;
默認(rèn)值:on;
上下文:http, server, location
含義:是否傳遞請(qǐng)求體信息

代理情景下Nginx與上游服務(wù)器建立連接細(xì)節(jié)

1.proxy_connect_timeout time;
默認(rèn)值:60s;
上下文:http, server, location
含義:nginx與上游服務(wù)器建立長(zhǎng)連接的時(shí)間

2.proxy_socket_keepalive on | off;
默認(rèn)值:off幕袱;
上下文:http, server, location
含義:是否打開(kāi)socket長(zhǎng)連接

3.proxy_send_timeout time;
默認(rèn)值:60s暴备;
上下文:http, server, location
含義:建立連接后在指定時(shí)間沒(méi)有發(fā)送請(qǐng)求關(guān)閉連接

4.proxy_ignore_client_bort on | off;
默認(rèn)值:off;
上下文:http, server, location
含義:當(dāng)連接關(guān)閉時(shí)是否停止處理請(qǐng)求

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末们豌,一起剝皮案震驚了整個(gè)濱河市涯捻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌望迎,老刑警劉巖障癌,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辩尊,居然都是意外死亡涛浙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)摄欲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)轿亮,“玉大人,你說(shuō)我怎么就攤上這事胸墙∥易ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵迟隅,是天一觀的道長(zhǎng)仓手。 經(jīng)常有香客問(wèn)我,道長(zhǎng)玻淑,這世上最難降的妖魔是什么嗽冒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮补履,結(jié)果婚禮上添坊,老公的妹妹穿的比我還像新娘。我一直安慰自己箫锤,他們只是感情好贬蛙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著谚攒,像睡著了一般阳准。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馏臭,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天野蝇,我揣著相機(jī)與錄音,去河邊找鬼。 笑死绕沈,一個(gè)胖子當(dāng)著我的面吹牛锐想,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乍狐,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赠摇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浅蚪?” 一聲冷哼從身側(cè)響起藕帜,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惜傲,沒(méi)想到半個(gè)月后洽故,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡操漠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年收津,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饿这。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浊伙。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖长捧,靈堂內(nèi)的尸體忽然破棺而出嚣鄙,到底是詐尸還是另有隱情,我是刑警寧澤串结,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布哑子,位于F島的核電站,受9級(jí)特大地震影響肌割,放射性物質(zhì)發(fā)生泄漏卧蜓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一把敞、第九天 我趴在偏房一處隱蔽的房頂上張望弥奸。 院中可真熱鬧,春花似錦奋早、人聲如沸盛霎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)愤炸。三九已至,卻和暖如春掉奄,著一層夾襖步出監(jiān)牢的瞬間规个,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绰姻,地道東北人枉侧。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像狂芋,于是被迫代替她去往敵國(guó)和親榨馁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容