Nginx中proxy_pass/proxy_redirect/proxy_set_header配置說明

ngx_http_proxy_module

實(shí)現(xiàn)將請(qǐng)求轉(zhuǎn)發(fā)到其他服務(wù)器必孤。

proxy_pass

語法: proxy_pass URL

默認(rèn): -

上下文:locaiton盲赊,location中的if纱皆,limit_except

location映射的服務(wù)器設(shè)置協(xié)議猴贰、地址揭绑、URI坦报。

  • 協(xié)議可以是http或者https上煤;

  • 地址可以是域名或者IP休玩,可以同時(shí)指定端口;

  • 地址也可以是以unix為前綴,包含在:中間的UNIX域名套接字路徑拴疤;

    proxy_pass http://unix:/tmp/backend.socket:/uri/;
    
  • 如果proxy_pass指令中帶有URI永部,當(dāng)請(qǐng)求被轉(zhuǎn)發(fā)到服務(wù)器時(shí),客戶端原請(qǐng)求中標(biāo)準(zhǔn)的URI將會(huì)被指令中URI替換呐矾;

    location /name/ {
        proxy_pass http://127.0.0.1/remote/;
    }
    
  • 如果proxy_pass指令中沒有URI苔埋,當(dāng)請(qǐng)求被轉(zhuǎn)發(fā)到服務(wù)器時(shí),將會(huì)使用客戶端原請(qǐng)求中的URI蜒犯;

  • 不可替換URI的情況

    • location通過正字表達(dá)式定義组橄;

    • location內(nèi)部通過rewrite指令修改過URI;

      location /name/ {
          rewrite    /name/([^/]+) /users?name=$1 break;
          proxy_pass http://127.0.0.1;
      }
      
    • proxy_pass指令中使用變量罚随;

      location /name/ {
          proxy_pass http://127.0.0.1$request_uri;
      }
      

proxy_redirect

語法:proxy_redirect default玉工;

? proxy_redirect off;

? proxy_redirect redirect replacement;

默認(rèn):proxy_redirect default;

上下文:http, server, location

設(shè)置對(duì)代理服務(wù)器響應(yīng)頭中的LocationRefresh字段的重寫。

  • 該指令實(shí)現(xiàn)將代理服務(wù)器響應(yīng)頭中的字段“Location: http://localhost:8000/two/some/uri/”重寫為“Location: http://frontend/one/some/uri/”淘菩;

    proxy_redirect http://localhost:8000/two/ http://frontend/one/;
    
  • 如果省略repacement字符串遵班,如果默認(rèn)服務(wù)器不是80端口,那么將會(huì)插入默認(rèn)服務(wù)器的名稱和端口潮改;

    proxy_redirect http://localhost:8000/two/ /;
    
  • 指定default參數(shù)的情況下狭郑,使用locationproxy_pass的參數(shù)。如下兩個(gè)指令是等價(jià)的

    location /one/ {
        proxy_pass     http://upstream:port/two/;
        proxy_redirect default;
    
    location /one/ {
        proxy_pass     http://upstream:port/two/;
        proxy_redirect http://upstream:port/two/ /one/;
    
  • proxy_pass指令中有變量的情況下汇在,proxy_redirect指令不能指定default參數(shù)翰萨;

  • replacement中可以使用變量,redirect從1.1.11版本開始也可以使用變量趾疚;

    proxy_redirect http://localhost:8000/ http://$host:$server_port/;
    
    proxy_redirect http://$proxy_host:8000/ /;
    
  • 從1.1.11版本開始proxy_redirect指令中允許使用正則表達(dá)式

    • ~起始表示匹配時(shí)大小寫敏感缨历;

      • ~*起始表示匹配時(shí)大小寫不敏感;

      • redirect中可以包含命名和positional captures糙麦,然后在replacement中引用辛孵;

        proxy_redirect ~^(http://[^:]+):\d+(/.+)$ $1$2;
        proxy_redirect ~*/user/([^/]+)/(.+)$      http://$1.example.com/$2;
        
  • 可以同時(shí)指定多個(gè)proxy_redirect,如果指定了off參數(shù)赡磅,表示當(dāng)前級(jí)別下的所有proxy_redirect指令將失效魄缚;

    proxy_redirect off;
    proxy_redirect default;
    proxy_redirect http://localhost:8000/  /;
    proxy_redirect http://www.example.com/ /;
    
  • 下面指令實(shí)現(xiàn)給相對(duì)路徑上增加主機(jī)名;

    proxy_redirect / /;
    

proxy_set_header

語法: proxy_set_header field value;

默認(rèn): proxy_set_header Host $proxy_host;

? proxy_set_header Connection close;

上下文: http, server, location

轉(zhuǎn)發(fā)請(qǐng)求到代理服務(wù)器時(shí)該指令允許重新定義或者追加消息頭中的字段焚廊。

  • value的內(nèi)容可以使文本冶匹、變量或者二者的組合;

  • 如果當(dāng)前指令中沒有定義proxy_set_header指令咆瘟,則可以繼承上一級(jí)別中的定義嚼隘;

  • 默認(rèn)情況只重新定義兩個(gè)字段;

    proxy_set_header Host       $proxy_host;
    proxy_set_header Connection close;
    
  • 其中緩存的情況袒餐,原始請(qǐng)求中的“If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range”, 和“If-Range”不會(huì)轉(zhuǎn)發(fā)到代理服務(wù)器飞蛹;

  • 不改變請(qǐng)求頭中的"Host"字段的設(shè)置

    proxy_set_header Host       $http_host;
    

    如果客戶端請(qǐng)求頭中沒有http_host字段谤狡,則不會(huì)轉(zhuǎn)發(fā)到服務(wù)器,這種情況下使用$host變量相對(duì)更好卧檐,$host變量相當(dāng)于請(qǐng)求頭中Host字段中服務(wù)器名稱墓懂,或者請(qǐng)求頭中沒有Host字段時(shí)等價(jià)于主服務(wù)器的名稱;

    proxy_set_header Host       $host;
    
  • 設(shè)置將服務(wù)器器名稱和端口一起轉(zhuǎn)發(fā)到代理服務(wù)器霉囚;

    proxy_set_header Host       $host:$proxy_port;
    
  • 如果請(qǐng)求頭中的字段value為空字符串捕仔,則不會(huì)轉(zhuǎn)發(fā)到服務(wù)器;

    proxy_set_header Accept-Encoding "";
    

ngx_http_proxy_module自帶參數(shù)

自帶參數(shù)可以通過proxy_set_header指令使用盈罐。

$proxy_host

proxy_pass指令中定義的代理服務(wù)器的名稱和端口

$proxy_port

proxy_pass指令中定義的代理服務(wù)器的端口榜跌,或者是指定協(xié)議的默認(rèn)端口

$proxy_add_x_forwarded_for

表示客戶端請(qǐng)求頭中的X-Forwarded-For字段,該字段中包含$removte_addr變量暖呕,通過逗號(hào),分隔斜做。如果客戶端請(qǐng)求頭中沒有出現(xiàn)X-Forwarded-For字段,proxy_add_x_forwarded_for`變量等價(jià)于`remote_addr`湾揽。

ngx_http_proxy_module中的其他參數(shù)請(qǐng)參考官方網(wǎng)站

其他文章列表

spring web service系列1
spring web service系列2
spring web service系列3
maven配置文件settings.xml詳解
Nginx轉(zhuǎn)發(fā)請(qǐng)求過程解析
Nginx中的負(fù)載均衡算法
Nginx upstream指令配置說明
Nginx中虛擬服務(wù)器server指令配置說明
Nginx中ngx_http_core_module相關(guān)指令配置說明
Java自帶JVM監(jiān)控工具jstat使用詳細(xì)說明
Java自帶JVM監(jiān)控工具jps使用詳細(xì)說明
Java自帶故障分析工具jmap工具使用說明
Java自帶故障分析工具jhat工具使用說明

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瓤逼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子库物,更是在濱河造成了極大的恐慌霸旗,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戚揭,死亡現(xiàn)場(chǎng)離奇詭異诱告,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)民晒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門精居,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人潜必,你說我怎么就攤上這事靴姿。” “怎么了磁滚?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵佛吓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我垂攘,道長(zhǎng)维雇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任晒他,我火速辦了婚禮吱型,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘陨仅。我一直安慰自己唁影,他們只是感情好耕陷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布掂名。 她就那樣靜靜地躺著据沈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饺蔑。 梳的紋絲不亂的頭發(fā)上锌介,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音猾警,去河邊找鬼孔祸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛发皿,可吹牛的內(nèi)容都是我干的崔慧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼穴墅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼惶室!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起玄货,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤皇钞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后松捉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夹界,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年隘世,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了可柿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丙者,死狀恐怖复斥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔓钟,我是刑警寧澤永票,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站滥沫,受9級(jí)特大地震影響侣集,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜兰绣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一世分、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缀辩,春花似錦臭埋、人聲如沸踪央。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畅蹂。三九已至,卻和暖如春荣恐,著一層夾襖步出監(jiān)牢的瞬間液斜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工叠穆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留少漆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓硼被,卻偏偏與公主長(zhǎng)得像示损,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嚷硫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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