關(guān)于遨游建站優(yōu)勢(shì)行業(yè)動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)流程網(wǎng)站樣板網(wǎng)站功能與價(jià)格網(wǎng)站建設(shè)方案與報(bào)價(jià)手機(jī)網(wǎng)站設(shè)計(jì)網(wǎng)站改版升級(jí)響應(yīng)式網(wǎng)站開(kāi)發(fā)營(yíng)銷型網(wǎng)站開(kāi)發(fā)集團(tuán)型網(wǎng)站設(shè)計(jì)自適應(yīng)網(wǎng)站設(shè)計(jì)手機(jī)網(wǎng)站建設(shè)問(wèn)題網(wǎng)站改版升級(jí)問(wèn)題微信網(wǎng)站開(kāi)發(fā)外貿(mào)網(wǎng)站開(kāi)發(fā)保姆網(wǎng)站開(kāi)發(fā)網(wǎng)站建設(shè)知識(shí)案例展示商城樣板商城功能購(gòu)物網(wǎng)站制作小程序樣板小程序功能小程序設(shè)計(jì)百度搜索推廣谷歌搜索推廣360搜索推廣搜狗搜索推廣神馬搜索推廣搜索引擎廣告微信廣告今日頭條推廣新浪扶翼廣告UC頭條推廣一點(diǎn)資訊推廣搜狐匯算推廣網(wǎng)易推廣移動(dòng)信息流廣告抖音廣告代運(yùn)營(yíng)愛(ài)奇藝廣告優(yōu)酷廣告快手推廣視頻營(yíng)銷平臺(tái)知乎營(yíng)銷推廣陌陌廣告社交自媒體網(wǎng)站托管費(fèi)用網(wǎng)站托管協(xié)議域名備案域名回收企業(yè)郵箱互動(dòng)營(yíng)銷活動(dòng)SSL證書數(shù)據(jù)恢復(fù)關(guān)鍵詞快速排名地圖標(biāo)注創(chuàng)意設(shè)計(jì)企業(yè)百家號(hào)認(rèn)證企業(yè)抖音號(hào)藍(lán)V認(rèn)證網(wǎng)站建設(shè)問(wèn)題企業(yè)網(wǎng)站建設(shè)公司網(wǎng)站制作企業(yè)網(wǎng)站設(shè)計(jì)企業(yè)建網(wǎng)站企業(yè)網(wǎng)站優(yōu)化建站技術(shù)域名知識(shí)SEO學(xué)院SEO課程SEO工具

Nginx 反向代理目錄介紹

 二維碼 6
發(fā)表時(shí)間:2023-09-07 16:42作者:敖游來(lái)源:遨游建站網(wǎng)址:http://aquaponicswiki.com

Nginx 服務(wù)器的反向代理服務(wù)是其最常用的重要功能,由反向代理服務(wù)也可以衍生出很多與此相關(guān)的 Nginx 服務(wù)器重要功能,比如后面會(huì)介紹的負(fù)載均衡。本篇博客我們會(huì)先介紹 Nginx 的反向代理,當(dāng)然在了解反向代理之前,我們需要先知道什么是代理以及什么是正向代理。

前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。


1、代理


在JAVA設(shè)計(jì)模式中,代理模式是這樣定義的:給某個(gè)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制原對(duì)象的引用。

可能大家不太明白這句話,在舉一個(gè)現(xiàn)實(shí)生活中的例子:比如我們要買一間二手房,雖然我們可以自己去找房源,但是這太花費(fèi)時(shí)間精力了,而且房屋質(zhì)量檢測(cè)以及房屋過(guò)戶等一系列手續(xù)也都得我們?nèi)マk,再說(shuō)現(xiàn)在這個(gè)社會(huì),等我們找到房源,說(shuō)不定房子都已經(jīng)漲價(jià)了,那么怎么辦呢?最簡(jiǎn)單快捷的方法就是找二手房中介公司(為什么?別人那里房源多?。谑俏覀兙臀兄薪楣緛?lái)給我找合適的房子,以及后續(xù)的質(zhì)量檢測(cè)過(guò)戶等操作,我們只需要選好自己想要的房子,然后交錢就行了。

代理簡(jiǎn)單來(lái)說(shuō),就是如果我們想做什么,但又不想直接去做,那么這時(shí)候就找另外一個(gè)人幫我們?nèi)プ?。那么這個(gè)例子里面的中介公司就是給我們做代理服務(wù)的,我們委托中介公司幫我們找房子。

Nginx 主要能夠代理如下幾種協(xié)議,其中用到的最多的就是做Http代理服務(wù)器。

01.png


2、正向代理


弄清楚什么是代理了,那么什么又是正向代理呢?

這里我再舉一個(gè)例子:大家都知道,現(xiàn)在國(guó)內(nèi)是訪問(wèn)不了 google的,那么怎么才能訪問(wèn) Google呢?我們又想,美國(guó)人不是能訪問(wèn) Google嗎(這不廢話,Google就是美國(guó)的),如果我們電腦的對(duì)外公網(wǎng) IP 地址能變成美國(guó)的 IP 地址,那不就可以訪問(wèn) Google了。你很聰明,VPN 就是這樣產(chǎn)生的。我們?cè)谠L問(wèn) Google 時(shí),先連上 VPN 服務(wù)器將我們的 IP 地址變成美國(guó)的 IP 地址,然后就可以順利地訪問(wèn)了。

這里的 VPN 就是做正向代理的。正向代理服務(wù)器位于客戶端和服務(wù)器之間,為了向服務(wù)器獲取數(shù)據(jù),客戶端要向代理服務(wù)器發(fā)送一個(gè)請(qǐng)求,并指定目標(biāo)服務(wù)器,代理服務(wù)器將目標(biāo)服務(wù)器返回的數(shù)據(jù)轉(zhuǎn)交給客戶端。這里客戶端是要進(jìn)行一些正向代理的設(shè)置的。

PS:這里介紹一下什么是 VPN,VPN 通俗的講就是一種中轉(zhuǎn)服務(wù),當(dāng)我們電腦接入 VPN 后,我們對(duì)外 IP 地址就會(huì)變成 VPN 服務(wù)器的 公網(wǎng) IP,我們請(qǐng)求或接受任何數(shù)據(jù)都會(huì)通過(guò)這個(gè)VPN 服務(wù)器然后傳入到我們本機(jī)。這樣做有什么好處呢?比如 VPN 游戲加速方面的原理,我們要玩網(wǎng)通區(qū)的 LOL,但是本機(jī)接入的是電信的寬帶,玩網(wǎng)通區(qū)的會(huì)比較卡,這時(shí)候就利用 VPN 將電信網(wǎng)絡(luò)變?yōu)榫W(wǎng)通網(wǎng)絡(luò),然后在玩網(wǎng)通區(qū)的LOL就不會(huì)卡了(注意:VPN 是不能增加帶寬的,不要以為不卡了是因?yàn)榫W(wǎng)速提升了)。

可能聽(tīng)到這里大家還是很抽象,沒(méi)關(guān)系,和下面的反向代理對(duì)比理解就簡(jiǎn)單了。


3、反向代理


反向代理和正向代理的區(qū)別就是:正向代理代理客戶端,反向代理代理服務(wù)器。

反向代理,其實(shí)客戶端對(duì)代理是無(wú)感知的,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問(wèn),我們只需要將請(qǐng)求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實(shí)服務(wù)器IP地址。

下面我們通過(guò)兩張圖來(lái)對(duì)比正向代理和方向代理:

Nginx 反向代理目錄介紹Nginx 反向代理目錄介紹


理解這兩種代理的關(guān)鍵在于代理服務(wù)器所代理的對(duì)象是什么,正向代理代理的是客戶端,我們需要在客戶端進(jìn)行一些代理的設(shè)置。而反向代理代理的是服務(wù)器,作為客戶端的我們是無(wú)法感知到服務(wù)器的真實(shí)存在的。

總結(jié)起來(lái)還是一句話:正向代理代理客戶端,反向代理代理服務(wù)器。


4、Nginx 反向代理


范例:使用 nginx 反向代理 www.123.com 直接跳轉(zhuǎn)到127.0.0.1:8080

①、啟動(dòng)一個(gè) Tomcat,瀏覽器地址欄輸入 127.0.0.1:8080,出現(xiàn)如下界面

04.png

②、通過(guò)修改本地 host 文件,將 www.123.com 映射到 127.0.0.1

127.0.0.1 www.123.com

將上面代碼添加到 windows 的host 文件中,該文件位置在:

Nginx 反向代理目錄介紹

配置完成之后,我們便可以通過(guò) www.123.com:8080 訪問(wèn)到第一步出現(xiàn)的 Tomcat初始界面。

那么如何只需要輸入 www.123.com 便可以跳轉(zhuǎn)到 Tomcat初始界面呢?便用到 nginx的反向代理。

③、在 nginx.conf 配置文件中增加如下配置:

1     server {

2         listen       80;

3         server_name   www.123.com;

4

5         location / {

6             proxy_pass http://127.0.0.1:8080;

7             index   index.html index.htm index.jsp;

8         }

9     }

如上配置,我們監(jiān)聽(tīng)80端口,訪問(wèn)域名為www.123.com,不加端口號(hào)時(shí)默認(rèn)為80端口,故訪問(wèn)該域名時(shí)會(huì)跳轉(zhuǎn)到127.0.0.1:8080路徑上。

我們?cè)跒g覽器端輸入 www.123.com 結(jié)果如下:

Nginx 反向代理目錄介紹

④、總結(jié)

其實(shí)這里更貼切地說(shuō)是通過(guò)nginx代理端口,原先訪問(wèn)的是8080端口,通過(guò)nginx代理之后,通過(guò)80端口就可以訪問(wèn)了。


5、Nginx 反向代理相關(guān)指令介紹


①、listen

該指令用于配置網(wǎng)絡(luò)監(jiān)聽(tīng)。主要有如下三種配置語(yǔ)法結(jié)構(gòu):

一、配置監(jiān)聽(tīng)的IP地址

listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [deferred]

[accept_filter=filter] [bind] [ssl];

二、配置監(jiān)聽(tīng)端口

listen port[default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter]

[deferred] [bind] [ipv6only=on|off] [ssl];

三、配置 UNIX Domain Socket

listen unix:path [default_server]   [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter]

[deferred] [bind] [ssl];

上面的配置看似比較復(fù)雜,其實(shí)使用起來(lái)是比較簡(jiǎn)單的:

1 listen *:80 | *:8080 #監(jiān)聽(tīng)所有80端口和8080端口

2 listen   IP_address:port   #監(jiān)聽(tīng)指定的地址和端口號(hào)

3 listen   IP_address     #監(jiān)聽(tīng)指定ip地址所有端口

4 listen port     #監(jiān)聽(tīng)該端口的所有IP連接

下面分別解釋每個(gè)選項(xiàng)的具體含義:

1、address:IP地址,如果是 IPV6地址,需要使用中括號(hào)[] 括起來(lái),比如[fe80::1]等。

2、port:端口號(hào),如果只定義了IP地址,沒(méi)有定義端口號(hào),那么就使用80端口。

3、path:socket文件路徑,如 var/run/nginx.sock等。

4、default_server:標(biāo)識(shí)符,將此虛擬主機(jī)設(shè)置為 address:port 的默認(rèn)主機(jī)。(在 nginx-0.8.21 之前使用的是 default 指令)

5、 setfib=number:Nginx-0.8.44 中使用這個(gè)變量監(jiān)聽(tīng) socket 關(guān)聯(lián)路由表,目前只對(duì) FreeBSD 起作用,不常用。

6、backlog=number:設(shè)置監(jiān)聽(tīng)函數(shù)listen()最多允許多少網(wǎng)絡(luò)連接同時(shí)處于掛起狀態(tài),在 FreeBSD 中默認(rèn)為 -1,其他平臺(tái)默認(rèn)為511.

7、rcvbuf=size:設(shè)置監(jiān)聽(tīng)socket接收緩存區(qū)大小。

8、sndbuf=size:設(shè)置監(jiān)聽(tīng)socket發(fā)送緩存區(qū)大小。

9、deferred:標(biāo)識(shí)符,將accept()設(shè)置為Deferred模式。

10、accept_filter=filter:設(shè)置監(jiān)聽(tīng)端口對(duì)所有請(qǐng)求進(jìn)行過(guò)濾,被過(guò)濾的內(nèi)容不能被接收和處理,本指令只在 FreeBSD 和.NETBSD 5.0+ 平臺(tái)下有效。filter 可以設(shè)置為 dataready 或 httpready 。

11、bind:標(biāo)識(shí)符,使用獨(dú)立的bind() 處理此address:port,一般情況下,對(duì)于端口相同而IP地址不同的多個(gè)連接,Nginx 服務(wù)器將只使用一個(gè)監(jiān)聽(tīng)指令,并使用 bind() 處理端口相同的所有連接。

12、ssl:標(biāo)識(shí)符,設(shè)置會(huì)話連接使用 SSL模式進(jìn)行,此標(biāo)識(shí)符和Nginx服務(wù)器提供的 HTTPS 服務(wù)有關(guān)。

②、server_name

該指令用于虛擬主機(jī)的配置。通常分為以下兩種:

1、基于名稱的虛擬主機(jī)配置

語(yǔ)法格式如下:

server_name   name ...;

一、對(duì)于name 來(lái)說(shuō),可以只有一個(gè)名稱,也可以有多個(gè)名稱,中間用空格隔開(kāi)。而每個(gè)名字由兩段或者三段組成,每段之間用“.”隔開(kāi)。

server_name 123.com www.123.com

二、可以使用通配符“*”,但通配符只能用在由三段字符組成的首段或者尾端,或者由兩端字符組成的尾端。

server_name *.123.com www.123.*

三、還可以使用正則表達(dá)式,用“~”作為正則表達(dá)式字符串的開(kāi)始標(biāo)記。

server_name ~^wwwd+.123.com$;

該表達(dá)式“~”表示匹配正則表達(dá)式,以www開(kāi)頭(“^”表示開(kāi)頭),緊跟著一個(gè)0~9之間的數(shù)字,在緊跟“.123.co”,最后跟著“m”($表示結(jié)尾)

以上匹配的順序優(yōu)先級(jí)如下:

1 ①、準(zhǔn)確匹配 server_name

2 ②、通配符在開(kāi)始時(shí)匹配 server_name 成功

3 ③、通配符在結(jié)尾時(shí)匹配 server_name 成功

4 ④、正則表達(dá)式匹配 server_name 成功

2、基于 IP 地址的虛擬主機(jī)配置

語(yǔ)法結(jié)構(gòu)和基于域名匹配一樣,而且不需要考慮通配符和正則表達(dá)式的問(wèn)題。

server_name 192.168.1.1

③、location

該指令用于匹配 URL。

語(yǔ)法如下:

1 location [ = | ~ | ~* | ^~] uri {

2

3 }

1、= :用于不含正則表達(dá)式的 uri 前,要求請(qǐng)求字符串與 uri 嚴(yán)格匹配,如果匹配成功,就停止繼續(xù)向下搜索并立即處理該請(qǐng)求。

2、~:用于表示 uri 包含正則表達(dá)式,并且區(qū)分大小寫。

3、~*:用于表示 uri 包含正則表達(dá)式,并且不區(qū)分大小寫。

4、^~:用于不含正則表達(dá)式的 uri 前,要求 Nginx 服務(wù)器找到標(biāo)識(shí) uri 和請(qǐng)求字符串匹配度最高的 location 后,立即使用此 location 處理請(qǐng)求,而不再使用 location 塊中的正則 uri 和請(qǐng)求字符串做匹配。

注意:如果 uri 包含正則表達(dá)式,則必須要有 ~ 或者 ~* 標(biāo)識(shí)。

④、proxy_pass

該指令用于設(shè)置被代理服務(wù)器的地址??梢允侵鳈C(jī)名稱、IP地址加端口號(hào)的形式。

語(yǔ)法結(jié)構(gòu)如下:

proxy_pass URL;

URL 為被代理服務(wù)器的地址,可以包含傳輸協(xié)議、主機(jī)名稱或IP地址加端口號(hào),URI等。

proxy_pass   http://www.123.com/uri;

⑤、index

該指令用于設(shè)置網(wǎng)站的默認(rèn)首頁(yè)。

語(yǔ)法為:

index   filename ...;

后面的文件名稱可以有多個(gè),中間用空格隔開(kāi)。

index   index.html index.jsp;

通常該指令有兩個(gè)作用:第一個(gè)是用戶在請(qǐng)求訪問(wèn)網(wǎng)站時(shí),請(qǐng)求地址可以不寫首頁(yè)名稱;第二個(gè)是可以對(duì)一個(gè)請(qǐng)求,根據(jù)請(qǐng)求內(nèi)容而設(shè)置不同的首頁(yè)。


參考文檔:苗澤老師的《Nginx高性能Web服務(wù)器詳解》


資料推薦


最近又趕上跳槽的高峰期(招聘旺季),好多讀者都問(wèn)我要有沒(méi)有最新面試題,找華為朋友整理一份內(nèi)部資料《第6版:互聯(lián)網(wǎng)大廠面試題》并分類 4 份 PDF,累計(jì) 926 頁(yè)!

整個(gè)資料包,包括 Spring、Spring Boot/Cloud、Dubbo、JVM、集合、多線程、JPA、MyBatis、MySQL、大數(shù)據(jù)、Nginx、Git、Docker、GitHub、Servlet、JavaWeb、IDEA、redis、算法、面試題等幾乎覆蓋了 Java 基礎(chǔ)和阿里巴巴等大廠面試題等、等技術(shù)棧!

07.png

據(jù)說(shuō)已經(jīng)有小伙伴通過(guò)這套資料,成功的入職了螞蟻金服、字節(jié)跳動(dòng)等大廠。

08.png

而且,這些資料不是掃描版的,里面的文字都可以直接復(fù)制,非常便于我們學(xué)習(xí):

Nginx 反向代理目錄介紹

廣告投放問(wèn)題
網(wǎng)站建設(shè)問(wèn)題
小程序設(shè)計(jì)問(wèn)題

以信載商,良心建站。遨游始終秉承“一次建站、終身維護(hù)”的宗旨,竭誠(chéng)為客戶提供最優(yōu)質(zhì)的互聯(lián)網(wǎng)服務(wù)。遨游建站率先植入seo優(yōu)化理念,讓你的網(wǎng)頁(yè)更利于搜索引擎抓取,關(guān)鍵詞排名更靠前。可仿站、可定制。無(wú)論是傳統(tǒng)型企業(yè)官網(wǎng)、集團(tuán)型品牌官網(wǎng),還是營(yíng)銷型網(wǎng)站、電商型網(wǎng)站、定制型網(wǎng)站、特殊行業(yè)網(wǎng)站(醫(yī)療、教育),全部搞定。

公司:網(wǎng)站建設(shè)_小程序設(shè)計(jì)_競(jìng)價(jià)托管代運(yùn)營(yíng)公司;郵箱:1013601535@qq.com

手機(jī):17073547034;QQ: 1013601535

在線留言咨詢,24小時(shí)內(nèi)回復(fù)
我想咨詢
*
企業(yè)名稱
手機(jī)號(hào)碼
*
您的姓名
所在城市
提交
最新發(fā)布
注冊(cè)體驗(yàn)
企業(yè)郵箱
域名注冊(cè)
SSL證書
地圖標(biāo)注
網(wǎng)站備案
服務(wù)器
友情鏈接
我們是中小企業(yè)可信賴的合作伙伴!始終專注一件事,一站式互聯(lián)網(wǎng)信息技術(shù)服務(wù)商
17073547034
全國(guó)統(tǒng)一服務(wù)熱線
遨游建站是全國(guó)高端網(wǎng)站建設(shè)公司,提供廣州企業(yè)網(wǎng)站建設(shè)/小程序開(kāi)發(fā)/購(gòu)物網(wǎng)站設(shè)計(jì)制作與競(jìng)價(jià)托管代運(yùn)營(yíng)服務(wù);秉承“一次建站,終身維護(hù)”的宗旨,有償提供互聯(lián)網(wǎng)技術(shù)支持。
本站部分圖片、音頻、視頻來(lái)源于網(wǎng)絡(luò),版權(quán)歸原作者,如有侵權(quán)請(qǐng)聯(lián)系我們刪除。
機(jī)
臺(tái)