第三十六節(jié)旱幼、Nginx動(dòng)靜分離/upstream/rewrite/location匹配優(yōu)先級(jí)

動(dòng)靜分離

Nginx動(dòng)靜分離簡(jiǎn)單來說就是把動(dòng)態(tài)跟靜態(tài)請(qǐng)求分開奉件,不能理解成只是單純的把動(dòng)態(tài)頁面和靜態(tài)頁面物理分離。嚴(yán)格意義上說應(yīng)該是動(dòng)態(tài)請(qǐng)求跟靜態(tài)請(qǐng)求分開痴鳄,可以理解成使用Nginx處理靜態(tài)頁面瘟斜,Tomcat、Resin出來動(dòng)態(tài)頁面痪寻。
動(dòng)靜分離從目前實(shí)現(xiàn)角度來講大致分為兩種螺句,一種是純粹的把靜態(tài)文件獨(dú)立成單獨(dú)的域名,放在獨(dú)立的服務(wù)器上橡类,也是目前主流推崇的方案蛇尚;另外一種方法就是動(dòng)態(tài)跟靜態(tài)文件混合在一起發(fā)布,通過nginx來分開顾画。通過location指定不同的后綴名實(shí)現(xiàn)不同的請(qǐng)求轉(zhuǎn)發(fā)取劫。
通過在server段代碼配置不同的location實(shí)現(xiàn)動(dòng)靜分離

####優(yōu)先級(jí)最小,所有沒匹配到的走根
 location /
    {
         proxy_next_upstream http_502 http_504 error timeout invalid_header;
         proxy_set_header Host  $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass http://jvm_web1;
    }
####所有php/jsp之類結(jié)尾的動(dòng)態(tài)頁面走后端動(dòng)態(tài)模塊處理,波浪線~表示匹配
    location ~ .*\.(php|jsp|cgi|shtml)?$
    {
         proxy_set_header Host  $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_pass http://jvm_web1;
    }
####所有html/gif結(jié)尾的靜態(tài)頁面nginx本機(jī)直接處理
    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
    {
        root /data/webapps/wugk1;
        expires      30d;#expires 定義用戶瀏覽器緩存時(shí)間30天,靜態(tài)頁面不經(jīng)常更新的話可以節(jié)省貸款緩解服務(wù)器壓力,第一次訪問下載新文件狀態(tài)200,以后直接訪問本地緩存狀態(tài)304,知道受訪問文件發(fā)生變化或者時(shí)間到期
    }
參數(shù)講解

Nginx常用配置參數(shù)有upstream匆笤,主要用于均衡后端多個(gè)實(shí)例:
Nginx 的upstream目前支持5種算法分配方式:
1)輪詢(默認(rèn)rr)
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到后端不同的服務(wù)器,如果后端某臺(tái)服務(wù)器down掉谱邪,自動(dòng)剔除炮捧,待恢復(fù)自動(dòng)添加上。
2)Weight權(quán)重
指定輪詢權(quán)重惦银,權(quán)重越高咆课,處理的請(qǐng)求就越多,weight和訪問比率成正比扯俱,用于后端服務(wù)器性能不均的情況书蚪。
3)ip_hash
每個(gè)請(qǐng)求根據(jù)訪問的IP的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器迅栅,可以解決session的問題善炫,一般用于登錄會(huì)話。
4)fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求库继,響應(yīng)時(shí)間短的優(yōu)先分配箩艺。
5)url_hash(第三方)
upstream的 fail_timeout和max_fails參數(shù)是用來判斷負(fù)載均衡upstream中的某個(gè)server是否失效。
在fail_timeout的時(shí)間內(nèi)宪萄,nignx與upstream中某個(gè)server的連接嘗試失敗了max_fails次艺谆,則nginx會(huì)認(rèn)為該server已經(jīng)失效。在接下來的 fail_timeout時(shí)間內(nèi)拜英,nginx不再將請(qǐng)求分發(fā)給失效的server静汤。
例如在nginx.conf里面配置如下的tdt_app均衡:

upstream tdt_app {
    ip_hash;   #配置ip_hash算法保證每個(gè)用戶只固定訪問一個(gè)后端服務(wù)器
    server   10.10.1.11:8080 weight=1 max_fails=2 fail_timeout=30s;
    server   10.10.1.12:8080 weight=1 max_fails=2 fail_timeout=30s;
}

Tdt_app均衡兩臺(tái)后端JAVA服務(wù),在30秒內(nèi)nginx會(huì)與后端的某個(gè)server通信檢測(cè)居凶,如果檢測(cè)連接失敗2次虫给,則Nginx會(huì)認(rèn)為該server已經(jīng)失效,然后踢出轉(zhuǎn)發(fā)列表侠碧,然后在接下來的30s內(nèi)抹估,nginx不再講請(qǐng)求轉(zhuǎn)發(fā)給失效的server。
另外弄兜,fail_timeout設(shè)置的時(shí)間對(duì)響應(yīng)時(shí)間沒影響药蜻,這個(gè)響應(yīng)時(shí)間是用proxy_connect_timeout和proxy_read_timeout來控制的。
proxy_connect_timeout : Nginx與后端服務(wù)器連接的超時(shí)時(shí)間替饿,發(fā)起握手等候響應(yīng)超時(shí)時(shí)間语泽。
proxy_read_timeout:連接成功后_等候后端服務(wù)器響應(yīng)時(shí)間,其實(shí)已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理(也可以說是后端服務(wù)器處理請(qǐng)求的時(shí)間)视卢。
proxy_send_timeout :后端服務(wù)器數(shù)據(jù)回傳時(shí)間踱卵,在規(guī)定時(shí)間之內(nèi)后端服務(wù)器必須傳完所有的數(shù)據(jù)。
keepalive_timout:一個(gè)http產(chǎn)生的tcp連接在傳送完最后一個(gè)響應(yīng)后据过,還需要等待多少秒后惋砂,才關(guān)閉這個(gè)連接妒挎。

rewrite規(guī)則

Rewrite規(guī)則含義就是某個(gè)URL重寫成特定的URL,從某種意義上說為了美觀或者對(duì)搜索引擎友好班利,提高收錄量及排名等饥漫。
Rewrite規(guī)則的最后一項(xiàng)參數(shù)為flag標(biāo)記,支持的flag標(biāo)記主要有以下幾種:
1)last :相當(dāng)于Apache里的(L)標(biāo)記罗标,表示完成rewrite庸队;
2)break;本條規(guī)則匹配完成后闯割,終止匹配彻消,不再匹配后面的規(guī)則
3)redirect:返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址
4)permanent:返回301永久重定向宙拉,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址
5)last和break用來實(shí)現(xiàn)URL重寫宾尚,瀏覽器地址欄URL地址不變。
如在sever段代碼的location段上面插入rewrite規(guī)則

rewrite  ^/$  /index01.html  last;
#將默認(rèn)網(wǎng)站根頁面強(qiáng)制跳轉(zhuǎn)到index01.html并且不現(xiàn)實(shí)跳轉(zhuǎn)后的URL地址
*代表前面0或更多個(gè)字符
+代表前面1或更多個(gè)字符
谢澈?代表前面0或1個(gè)字符
^代表字符串的開始位置
$代表字符串結(jié)束的位置
.為通配符煌贴,代表任何字符
rewrite  ^/(.*)$  /index01.html  last;
#將網(wǎng)站根后綴的所有頁面都跳轉(zhuǎn)
rewrite  ^/test/(.*)$  /index01.html  last;
#只針對(duì)test二級(jí)目錄以下的網(wǎng)頁做跳轉(zhuǎn)
#多個(gè)頁面跳轉(zhuǎn)
if ($host != ‘www.wugk.com’ ) {
rewrite ^/(.*)$  http://www.wugk.com/$1  permanent;
}
··· 
######location匹配優(yōu)先級(jí)
匹配優(yōu)先級(jí)由上到下依次遞減
- location=               #location=/test/abc.html
- location完整路徑  #location /test/abc.html
- location^~路徑   
- location~*正則
- location路徑
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锥忿,隨后出現(xiàn)的幾起案子牛郑,更是在濱河造成了極大的恐慌,老刑警劉巖敬鬓,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淹朋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡钉答,警方通過查閱死者的電腦和手機(jī)础芍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來数尿,“玉大人仑性,你說我怎么就攤上這事∑龃矗” “怎么了虏缸?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嫩实。 經(jīng)常有香客問我,道長(zhǎng)窥岩,這世上最難降的妖魔是什么甲献? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮颂翼,結(jié)果婚禮上晃洒,老公的妹妹穿的比我還像新娘慨灭。我一直安慰自己,他們只是感情好球及,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布氧骤。 她就那樣靜靜地躺著,像睡著了一般吃引。 火紅的嫁衣襯著肌膚如雪筹陵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天镊尺,我揣著相機(jī)與錄音朦佩,去河邊找鬼。 笑死庐氮,一個(gè)胖子當(dāng)著我的面吹牛语稠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弄砍,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼仙畦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了音婶?” 一聲冷哼從身側(cè)響起慨畸,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桃熄,沒想到半個(gè)月后先口,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞳收,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年碉京,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螟深。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谐宙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出界弧,到底是詐尸還是另有隱情凡蜻,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布垢箕,位于F島的核電站划栓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏条获。R本人自食惡果不足惜忠荞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧委煤,春花似錦堂油、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至讥邻,卻和暖如春迫靖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背计维。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工袜香, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲫惶。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓蜈首,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親欠母。 傳聞我的和親對(duì)象是個(gè)殘疾皇子欢策,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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