Nginx 反向代理目錄介紹

 二維碼 23
發表時間:2023-09-07 16:42作者:敖游來源:遨游建站網址:http://m.oudifangfumu.com

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

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。


1、代理


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

可能大家不太明白這句話,在舉一個現實生活中的例子:比如我們要買一間二手房,雖然我們可以自己去找房源,但是這太花費時間精力了,而且房屋質量檢測以及房屋過戶等一系列手續也都得我們去辦,再說現在這個社會,等我們找到房源,說不定房子都已經漲價了,那么怎么辦呢?最簡單快捷的方法就是找二手房中介公司(為什么?別人那里房源多?。?,于是我們就委托中介公司來給我找合適的房子,以及后續的質量檢測過戶等操作,我們只需要選好自己想要的房子,然后交錢就行了。

代理簡單來說,就是如果我們想做什么,但又不想直接去做,那么這時候就找另外一個人幫我們去做。那么這個例子里面的中介公司就是給我們做代理服務的,我們委托中介公司幫我們找房子。

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

01.png


2、正向代理


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

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

這里的 VPN 就是做正向代理的。正向代理服務器位于客戶端和服務器之間,為了向服務器獲取數據,客戶端要向代理服務器發送一個請求,并指定目標服務器,代理服務器將目標服務器返回的數據轉交給客戶端。這里客戶端是要進行一些正向代理的設置的。

PS:這里介紹一下什么是 VPN,VPN 通俗的講就是一種中轉服務,當我們電腦接入 VPN 后,我們對外 IP 地址就會變成 VPN 服務器的 公網 IP,我們請求或接受任何數據都會通過這個VPN 服務器然后傳入到我們本機。這樣做有什么好處呢?比如 VPN 游戲加速方面的原理,我們要玩網通區的 LOL,但是本機接入的是電信的寬帶,玩網通區的會比較卡,這時候就利用 VPN 將電信網絡變為網通網絡,然后在玩網通區的LOL就不會卡了(注意:VPN 是不能增加帶寬的,不要以為不卡了是因為網速提升了)。

可能聽到這里大家還是很抽象,沒關系,和下面的反向代理對比理解就簡單了。


3、反向代理


反向代理和正向代理的區別就是:正向代理代理客戶端,反向代理代理服務器。

反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,在返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器IP地址。

下面我們通過兩張圖來對比正向代理和方向代理:

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


理解這兩種代理的關鍵在于代理服務器所代理的對象是什么,正向代理代理的是客戶端,我們需要在客戶端進行一些代理的設置。而反向代理代理的是服務器,作為客戶端的我們是無法感知到服務器的真實存在的。

總結起來還是一句話:正向代理代理客戶端,反向代理代理服務器。


4、Nginx 反向代理


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

①、啟動一個 Tomcat,瀏覽器地址欄輸入 127.0.0.1:8080,出現如下界面

04.png

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

127.0.0.1 www.123.com

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

Nginx 反向代理目錄介紹

配置完成之后,我們便可以通過 www.123.com:8080 訪問到第一步出現的 Tomcat初始界面。

那么如何只需要輸入 www.123.com 便可以跳轉到 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     }

如上配置,我們監聽80端口,訪問域名為www.123.com,不加端口號時默認為80端口,故訪問該域名時會跳轉到127.0.0.1:8080路徑上。

我們在瀏覽器端輸入 www.123.com 結果如下:

Nginx 反向代理目錄介紹

④、總結

其實這里更貼切地說是通過nginx代理端口,原先訪問的是8080端口,通過nginx代理之后,通過80端口就可以訪問了。


5、Nginx 反向代理相關指令介紹


①、listen

該指令用于配置網絡監聽。主要有如下三種配置語法結構:

一、配置監聽的IP地址

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

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

二、配置監聽端口

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];

上面的配置看似比較復雜,其實使用起來是比較簡單的:

1 listen *:80 | *:8080 #監聽所有80端口和8080端口

2 listen   IP_address:port   #監聽指定的地址和端口號

3 listen   IP_address     #監聽指定ip地址所有端口

4 listen port     #監聽該端口的所有IP連接

下面分別解釋每個選項的具體含義:

1、address:IP地址,如果是 IPV6地址,需要使用中括號[] 括起來,比如[fe80::1]等。

2、port:端口號,如果只定義了IP地址,沒有定義端口號,那么就使用80端口。

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

4、default_server:標識符,將此虛擬主機設置為 address:port 的默認主機。(在 nginx-0.8.21 之前使用的是 default 指令)

5、 setfib=number:Nginx-0.8.44 中使用這個變量監聽 socket 關聯路由表,目前只對 FreeBSD 起作用,不常用。

6、backlog=number:設置監聽函數listen()最多允許多少網絡連接同時處于掛起狀態,在 FreeBSD 中默認為 -1,其他平臺默認為511.

7、rcvbuf=size:設置監聽socket接收緩存區大小。

8、sndbuf=size:設置監聽socket發送緩存區大小。

9、deferred:標識符,將accept()設置為Deferred模式。

10、accept_filter=filter:設置監聽端口對所有請求進行過濾,被過濾的內容不能被接收和處理,本指令只在 FreeBSD 和.NETBSD 5.0+ 平臺下有效。filter 可以設置為 dataready 或 httpready 。

11、bind:標識符,使用獨立的bind() 處理此address:port,一般情況下,對于端口相同而IP地址不同的多個連接,Nginx 服務器將只使用一個監聽指令,并使用 bind() 處理端口相同的所有連接。

12、ssl:標識符,設置會話連接使用 SSL模式進行,此標識符和Nginx服務器提供的 HTTPS 服務有關。

②、server_name

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

1、基于名稱的虛擬主機配置

語法格式如下:

server_name   name ...;

一、對于name 來說,可以只有一個名稱,也可以有多個名稱,中間用空格隔開。而每個名字由兩段或者三段組成,每段之間用“.”隔開。

server_name 123.com www.123.com

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

server_name *.123.com www.123.*

三、還可以使用正則表達式,用“~”作為正則表達式字符串的開始標記。

server_name ~^wwwd+.123.com$;

該表達式“~”表示匹配正則表達式,以www開頭(“^”表示開頭),緊跟著一個0~9之間的數字,在緊跟“.123.co”,最后跟著“m”($表示結尾)

以上匹配的順序優先級如下:

1 ①、準確匹配 server_name

2 ②、通配符在開始時匹配 server_name 成功

3 ③、通配符在結尾時匹配 server_name 成功

4 ④、正則表達式匹配 server_name 成功

2、基于 IP 地址的虛擬主機配置

語法結構和基于域名匹配一樣,而且不需要考慮通配符和正則表達式的問題。

server_name 192.168.1.1

③、location

該指令用于匹配 URL。

語法如下:

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

2

3 }

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

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

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

4、^~:用于不含正則表達式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字符串匹配度最高的 location 后,立即使用此 location 處理請求,而不再使用 location 塊中的正則 uri 和請求字符串做匹配。

注意:如果 uri 包含正則表達式,則必須要有 ~ 或者 ~* 標識。

④、proxy_pass

該指令用于設置被代理服務器的地址??梢允侵鳈C名稱、IP地址加端口號的形式。

語法結構如下:

proxy_pass URL;

URL 為被代理服務器的地址,可以包含傳輸協議、主機名稱或IP地址加端口號,URI等。

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

⑤、index

該指令用于設置網站的默認首頁。

語法為:

index   filename ...;

后面的文件名稱可以有多個,中間用空格隔開。

index   index.html index.jsp;

通常該指令有兩個作用:第一個是用戶在請求訪問網站時,請求地址可以不寫首頁名稱;第二個是可以對一個請求,根據請求內容而設置不同的首頁。


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


資料推薦


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

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

07.png

據說已經有小伙伴通過這套資料,成功的入職了螞蟻金服、字節跳動等大廠。

08.png

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

Nginx 反向代理目錄介紹

廣告投放問題
網站建設問題
小程序設計問題

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

公司:網站建設_小程序設計_競價托管代運營公司;郵箱:1013601535@qq.com

手機:17073547034;QQ: 1013601535

在線留言咨詢,24小時內回復
我想咨詢
*
企業名稱
手機號碼
*
您的姓名
所在城市
提交
最新發布
我們是中小企業可信賴的合作伙伴!始終專注一件事,一站式互聯網信息技術服務商
19240102767
全國統一服務熱線
遨游建站是全國高端網站建設公司,提供廣州企業網站建設/小程序開發/購物網站設計制作與競價托管代運營服務;秉承“一次建站,終身維護”的宗旨,有償提供互聯網技術支持。
本站部分圖片、音頻、視頻來源于網絡,版權歸原作者,如有侵權請聯系我們刪除。
主站蜘蛛池模板: 亚洲伊人成无码综合网 | 综合人妻久久一区二区精品| 狠狠色丁香婷婷综合久久片| 国产精品一区二区综合| 一本一本久久aa综合精品| 色综合天天综合给合国产| 香蕉99久久国产综合精品宅男自| 狠狠色丁香婷婷久久综合不卡| 一本色综合网久久| 久久香蕉综合色一综合色88| 色欲久久久久久综合网精品| 亚洲综合在线观看视频| 亚洲色偷偷狠狠综合网| 亚洲综合色一区二区三区| 国产色综合一区二区三区| 亚洲欧洲国产成人综合在线观看| 色婷婷六月亚洲综合香蕉| 色综合67194| 色综合天天综合狠狠| 麻豆久久婷婷综合五月国产| 久久久久久久综合| 久久婷婷国产综合精品| 狠狠色综合色综合网络| 狠狠色丁香久久综合五月| 久久香蕉综合色一综合色88| 久久综合九色综合精品| 国产精品综合色区在线观看 | 亚洲国产天堂久久综合| 伊人色综合九久久天天蜜桃| 国产成人久久综合热| 亚洲第一页综合图片自拍| 亚洲综合精品网站| 亚洲AV综合色一区二区三区| 伊人久久中文大香线蕉综合| 国产精品无码久久综合| 麻豆久久婷婷综合五月国产| 亚洲日韩在线中文字幕综合| 丁香狠狠色婷婷久久综合| 精品国产国产综合精品 | 伊人久久大香线蕉综合网站| 狠狠色丁香婷婷综合久久片|