Nginx 反向代理學(xué)習(xí)及實(shí)例筆記

背景

前幾天在學(xué)習(xí)負(fù)載均衡的知識(shí)咆繁,遇到了 Nginx 反向代理 的概念,其實(shí)在年初就寫過一次 Nginx 反向?qū)嵗墓P記,今天翻看發(fā)現(xiàn)很是潦草伟骨,而且當(dāng)時(shí)的編輯器也不滿足Markdown,作為尷尬癥晚期的我燃异,索性刪掉重新整理一篇 ...

【一】概念解釋

  • 代理

代理其實(shí)就是一個(gè)中介携狭,A 和 B 本來可以直連,中間插入一個(gè) C回俐,C 就是中介逛腿。

  • 正向代理

剛開始的時(shí)候,代理多數(shù)是幫助內(nèi)網(wǎng) client 訪問外網(wǎng) server 用的(比如HTTP代理)鲫剿,從內(nèi)到外鳄逾。

  • 反向代理(Reverse Proxy)
  1. "反向"這個(gè)詞在這兒的意思其實(shí)是指方向相反
  2. 以代理服務(wù)器來接受Internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器灵莲;并將從服務(wù)器上得到的結(jié)果返回給Internet上請(qǐng)求連接的客戶端
  3. 此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器
  4. 當(dāng)一個(gè)代理服務(wù)器能夠代理外部網(wǎng)絡(luò)上的主機(jī)雕凹,訪問內(nèi)部網(wǎng)絡(luò)時(shí),這種代理服務(wù)的方式稱為反向代理服務(wù)政冻。
  • 圖像解釋 【ps : 來源 知乎
知乎用戶解釋圖
  1. 正向代理中枚抵,Proxy 和 Client 同屬一個(gè) LAN,對(duì) Server 透明明场;
  2. 反向代理中汽摹,Proxy 和 Server 同屬一個(gè) LAN,對(duì) Client 透明苦锨。
  3. 實(shí)際上 Proxy 在兩種代理中做的事都是代為收發(fā)請(qǐng)求和響應(yīng)逼泣,不過從結(jié)構(gòu)上來看正好左右互換了下,所以把后出現(xiàn)的那種代理方式叫成了反向代理舟舒。
  • 形象圖【ps : 來源 知乎
形象圖示
  • 總結(jié)

正向代理隱藏真實(shí)客戶端拉庶,反向代理隱藏真實(shí)服務(wù)端
正向代理,代理的對(duì)象是客戶端秃励;反向代理氏仗,代理的對(duì)象是服務(wù)端

【二】反向代理的應(yīng)用/好處

  • 反向代理的應(yīng)用:

現(xiàn)在許多大型 web 網(wǎng)站都用到反向代理。
除了可以防止外網(wǎng)對(duì)內(nèi)網(wǎng)服務(wù)器的惡性攻擊夺鲜、緩存以減少服務(wù)器的壓力和訪問安全控制之外皆尔,還可以進(jìn)行負(fù)載均衡,將用戶請(qǐng)求分配給多個(gè)服務(wù)器

  • 反向代理的好處:

(1). 解決了網(wǎng)站服務(wù)器對(duì)外可見的問題币励;
(2). 節(jié)約了有限的 IP 地址資源慷蠕,企業(yè)內(nèi)所有的網(wǎng)站共享一個(gè)在 internet 中注冊(cè)的 IP 地址,這些服務(wù)器分配私有地址榄审,采用虛擬主機(jī)的方式對(duì)外提供服務(wù)砌们;
(3). 保護(hù)了真實(shí)的 web 服務(wù)器,web 服務(wù)器對(duì)外不可見,外網(wǎng)只能看到反向代理服務(wù)器浪感,而反向代理服務(wù)器上并沒有真實(shí)數(shù)據(jù)昔头,因此,保證了 web 服務(wù)器的資源安全影兽;
(4). 加速了對(duì)網(wǎng)站訪問速度揭斧,減輕 web 服務(wù)器的負(fù)擔(dān),反向代理具有緩存網(wǎng)頁的功能峻堰,如果用戶需要的內(nèi)容在緩存中讹开,則可以直接從代理服務(wù)其中獲取,減輕了 web 服務(wù)器的負(fù)荷捐名,同時(shí)也加快了用戶的訪問速度旦万。
(5).可以實(shí)現(xiàn)安全過濾,流控镶蹋,防 DDOS 等一系列策略

【三】反向代理的實(shí)現(xiàn)

  • 1)需要有一個(gè)負(fù)載均衡設(shè)備來分發(fā)用戶請(qǐng)求成艘,將用戶請(qǐng)求分發(fā)到空閑的服務(wù)器上
  • 2)服務(wù)器返回自己的服務(wù)到負(fù)載均衡設(shè)備
  • 3)負(fù)載均衡將服務(wù)器的服務(wù)返回用戶

以上的潛臺(tái)詞是:用戶和負(fù)載均衡設(shè)備直接通信,也意味著用戶做服務(wù)器域名解析時(shí)贺归,解析得到的 IP 其實(shí)是負(fù)載均衡的 IP淆两,而不是服務(wù)器的 IP,這樣有一個(gè)好處是拂酣,當(dāng)新加入/移走服務(wù)器時(shí)秋冰,僅僅需要修改負(fù)載均衡的服務(wù)器列表,而不會(huì)影響現(xiàn)有的服務(wù)婶熬。(來自:知乎)

【四】Nginx 反向代理 操作

1). nginx 反向代理 參考配置代碼
        #設(shè)定負(fù)載均衡的服務(wù)器列表
        #weigth參數(shù)表示權(quán)值剑勾,權(quán)值越高被分配到的幾率越大
        upstream Mos{
            server 192.168.1.106:80 weight=3;  
            server 192.168.1.143:80 weight=1;  
            #server localhost:80 weight=1; #本機(jī)
        }

        server {
            listen       80;
            server_name  localhost;
            index index.html index.htm index.php;
            root /mnt/web/hyicnoa;

            location / {
                if (!-e $request_filename){
                    rewrite ^/(.*)$ /index.php?s=/$1 last;
                    }
                proxy_pass http://Mos ;  #在這里設(shè)置一個(gè)代理,和upstream的名字一樣
                }
            location ~ .*\.(php|php5)?$
            {
                #fastcgi_pass  unix:/tmp/php-cgi.sock;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi.conf;
            }
            location ~ \.php$ 
            {
                proxy_pass  http://192.168.1.106; #此處限制訪問 php 文件時(shí)赵颅,跳轉(zhuǎn)到192.168.1.106 服務(wù)器解析
            }
            location ~ .*\.(js|css)?$
            {
            expires 1h;
            }
        }
2).提示
  • 上述配置文件內(nèi)容僅供參考甥材,信息并未顯示完全
  • 強(qiáng)烈建議不要直接修改 nginx.conf 文件,一般是根據(jù)類似如下的代碼 include /etc/nginx/conf.d/*.conf;進(jìn)行對(duì)應(yīng)目錄下新建文件的配置性含,以避免較大的配置影響.
  • "proxy_pass http://xxxxxx" 作為代理的位置,需要明確自己在哪種條件下進(jìn)行代理的使用鸳惯,具體實(shí)踐需要參考 nginx 配置語法商蕴,著重在于正則表達(dá)的限制條件
3). 注意信息
  • (1). 服務(wù)器列表僅做參考,以本次操作為例芝发,代理機(jī)為 192.168.1.87:80绪商,則訪問靜態(tài)文件時(shí)會(huì)按 weight 比重分配到 192.168.1.106:80192.168.1.143:80服務(wù)器器,進(jìn)行負(fù)載分配
  • (2).根據(jù)配置信息
location ~ \.php$ 
            {
                proxy_pass  http://192.168.1.106; #此處限制訪問php文件時(shí)辅鲸,跳轉(zhuǎn)到192.168.1.106服務(wù)器解析
            }

當(dāng)訪問 php 文件時(shí)格郁,會(huì)由 192.168.1.106 服務(wù)器解析內(nèi)容,完成后再交由192.168.1.87:80顯示給用戶.

  • (3).針對(duì)不同的目錄進(jìn)行代理把下面的配置放到根目錄代理的上面
 location /zmPro/ {
        proxy_pass http://192.168.1.143; #當(dāng)訪問zmPro目錄時(shí),由該IP服務(wù)器進(jìn)行解析
        }
  • (4). 反向代理進(jìn)行的負(fù)載均衡需要注意 session 的使用限制, 參考文章介紹
  • (5). 個(gè)人理解,負(fù)載均衡的配置只需更改一處 nginx 配置文件即可例书,要求服務(wù)器列表中的相應(yīng)目錄是盡量可以成功訪問的锣尉。
  • (6).開啟服務(wù),允許訪問决采,本人測(cè)試時(shí)只是關(guān)閉了防火墻自沧,根據(jù)定義的均衡服務(wù)器,避免訪問文件的存在性.
4). 截圖
  • default.conf 配置截圖树瞭,僅供參考
  • 筆記截圖
5).結(jié)果描述
  • 訪問 html 文件時(shí)拇厢,會(huì)根據(jù)權(quán)重由 192.168.1.106 和 192.168.1.143 進(jìn)行解析
  • 訪問 php 文件時(shí),只會(huì)由 192.168.1.106 解析
  • 訪問 zmPro 目錄下的文件時(shí)晒喷,會(huì)由 192.168.1.143 解析孝偎,此時(shí)如果是 html 文件,如果 192.168.1.106 對(duì)應(yīng)位置沒有相關(guān)文件凉敲,會(huì)根據(jù)前面的權(quán)重出現(xiàn)不同的訪問狀況衣盾,一種情況是由 192.168.1.143 正常解析,另一種情況是 192.168.1.106 無對(duì)應(yīng)文件而 404 解析失敗荡陷,如圖:
  • 所以雨效,強(qiáng)烈建議匹配不同內(nèi)容時(shí),注意訪問的可行性废赞,以及文件的同步性徽龟,建議可參考文章 nginx 反向代理配置及優(yōu)化

【五】 附錄

1). 推薦文章
2). 參考文章
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唉地,一起剝皮案震驚了整個(gè)濱河市据悔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耘沼,老刑警劉巖极颓,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異群嗤,居然都是意外死亡菠隆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門狂秘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骇径,“玉大人,你說我怎么就攤上這事者春∑葡危” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵钱烟,是天一觀的道長(zhǎng)晰筛。 經(jīng)常有香客問我嫡丙,道長(zhǎng),這世上最難降的妖魔是什么读第? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任曙博,我火速辦了婚禮,結(jié)果婚禮上卦方,老公的妹妹穿的比我還像新娘羊瘩。我一直安慰自己,他們只是感情好盼砍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布尘吗。 她就那樣靜靜地躺著,像睡著了一般浇坐。 火紅的嫁衣襯著肌膚如雪睬捶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天近刘,我揣著相機(jī)與錄音擒贸,去河邊找鬼。 笑死觉渴,一個(gè)胖子當(dāng)著我的面吹牛介劫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播案淋,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼座韵,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了踢京?” 一聲冷哼從身側(cè)響起誉碴,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓣距,沒想到半個(gè)月后黔帕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蹈丸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年成黄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逻杖。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慨默,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弧腥,到底是詐尸還是另有隱情,我是刑警寧澤潮太,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布管搪,位于F島的核電站虾攻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏更鲁。R本人自食惡果不足惜霎箍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澡为。 院中可真熱鬧漂坏,春花似錦、人聲如沸媒至。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拒啰。三九已至驯绎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谋旦,已是汗流浹背剩失。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留册着,地道東北人拴孤。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓魔熏,卻偏偏與公主長(zhǎng)得像炫七,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子器钟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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