自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nginx 正向代理與反向代理實(shí)戰(zhàn)

開發(fā) 前端
經(jīng)過對(duì)正向代理和反向代理概念上的理解、區(qū)別,以及在Nginx下演示操作一遍,相信你可以深刻體會(huì)到正向代理與反向代理的區(qū)別,以及在Nginx下代理的簡(jiǎn)單配置。

[[347700]]

1. 正向代理與反向代理的區(qū)別
1.1 什么是代理服務(wù)器?
所謂代理服務(wù)器就是位于發(fā)起請(qǐng)求的客戶端與原始服務(wù)器端之間的一臺(tái)跳板服務(wù)器,正向代理可以隱藏客戶端,反向代理可以隱藏原始服務(wù)器。

上面描述的還不是特別了解,接下來我們就認(rèn)識(shí)一下正向代理和反向代理的區(qū)別

1.2 正向代理的概念
正向代理,也就是傳說中的代理,他的工作原理就像一個(gè)跳板,簡(jiǎn)單的說,我是一個(gè)用戶,我訪問不了某網(wǎng)站,但是我能訪問一個(gè)代理服務(wù)器,這個(gè)代理服務(wù)器呢,他能訪問那個(gè)我不能訪問的網(wǎng)站,于是我先連上代理服務(wù)器,告訴他我需要那個(gè)無法訪問網(wǎng)站的內(nèi)容,代理服務(wù)器去取回來,然后返回給我。從網(wǎng)站的角度,只在代理服務(wù)器來取內(nèi)容的時(shí)候有一次記錄,有時(shí)候并不知道是用戶的請(qǐng)求,也隱藏了用戶的資料,這取決于代理告不告訴網(wǎng)站。

結(jié)論就是:正向代理:客戶端 <一> 代理 一>服務(wù)端 正向代理,是一個(gè)位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個(gè)請(qǐng)求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請(qǐng)求并將獲得的內(nèi)容返回給客戶端。

1.3 反向代理的概念
例如:用戶訪問 http://www.test.com/readme,但 www.test.com 上并不存在 readme 資源,它是偷偷從另外一臺(tái)服務(wù)器上取回來,然后作為轉(zhuǎn)交的內(nèi)容返回給用戶,但用戶并不知情。這里所提到的 www.test.com 這個(gè)域名對(duì)應(yīng)的服務(wù)器就設(shè)置來反向代理功能。

結(jié)論就是:客戶端 一>代理 <一> 服務(wù)端 反向代理正好相反,對(duì)于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置。客戶端向反向代理命名空間(name-space)中的內(nèi)容發(fā)送普通請(qǐng)求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請(qǐng)求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容原本就是它自己的一樣。

網(wǎng)友的神圖,加深理解

1.4 兩者區(qū)別
從用途上來講:

  • 正向代理的典型用途是為在防火墻內(nèi)的局域網(wǎng)客戶端提供訪問 Internet 的途徑。正向代理還可以使用緩沖特性減少網(wǎng)絡(luò)使用率。
  • 反向代理的典型用途是將防火墻后面的服務(wù)器提供給 Internet 用戶訪問。反向代理還可以為后端的多臺(tái)服務(wù)器提供負(fù)載平衡,或?yàn)楹蠖溯^慢的服務(wù)器提供緩沖服務(wù)。另外,反向代理還可以啟用高級(jí) URL 策略和管理技術(shù),從而使處于不同的 web 服務(wù)器系統(tǒng)的 web 頁(yè)面同時(shí)存在于同一個(gè) URL 空間下。

從安全性來講:

  • 正向代理允許客戶端通過它訪問任意網(wǎng)站并且因此客戶端自身,因此你必須采取安全措施以確保為經(jīng)過授權(quán)的客戶端提供服務(wù)。
  • 反向代理對(duì)外都是透明的,訪問者并不知道自己訪問的是一個(gè)代理。

總結(jié):

  • 開放的反向代理應(yīng)用: Nginx 和 Nat123。Nginx 是單純的反向代理,需要自行搭建發(fā)現(xiàn)代理服務(wù)才能使用,效果高。Nat123 是結(jié)合來 NAT 和反向代理的應(yīng)用,可以直接使用,解決80端口問題等,速度快。

2. Nginx 正向代理與反向代理實(shí)戰(zhàn)
2.1 正向代理配置場(chǎng)景演示
正向代理很常見,我們正常上網(wǎng)就是一種正向代理。 接下來我們演示正向代理的一個(gè)場(chǎng)景:

首先在A服務(wù)器(IP:192.168.1.110)的Nginx設(shè)置訪問控制,訪問控制之前訪問 A 下的test.html是這樣的,如下:

  1. 在A服務(wù)器的Nginx修改配置文件,加入一個(gè)判斷語(yǔ)句,如果訪問A的的 IP 不是 192.168.1.44 (B 服務(wù)器IP)則返回403.
  1. location / { 
  2.  
  3.   if ( $remote_addr !~* "^192\.168\.1\.44") { 
  4.  
  5.     return 403; 
  6.  
  7.   } 
  8.  
  9.   root html; 
  10.  
  11.   index index.html index.htm; 
  12.  

添加后reload一下nginx再訪問test.html,如下:

此時(shí),在 A服務(wù)器 的本地瀏覽器就是被限制來,訪問不了該資源。

  1. 接下來,在 B服務(wù)器 上修改Nginx配置文件,添加 resolver 和 proxy_pass ,設(shè)置如下:
  1. server { 
  2.  
  3.   listen 8080; 
  4.  
  5.   server_name localhost; 
  6.  
  7.   resolver 8.8.8.8; 
  8.  
  9.   location / { 
  10.  
  11.     proxy_pass http://$http_host$request_uri; 
  12.  
  13.   } 
  14.  
  15.   error_page 500 502 503 504 /50x.html; 
  16.  
  17.   location = /50x.html { 
  18.  
  19.     root /usr/share/nginx/html; 
  20.  
  21.   } 
  22.  

resolver 為 DNS 解析,這里填寫的IP 為 Google 提供的免費(fèi) DNS服務(wù)器的IP地址 proxy_pass 配置代理轉(zhuǎn)發(fā)

至此便是配置了B服務(wù)器所有訪問根一級(jí)的請(qǐng)求全部代理轉(zhuǎn)發(fā)對(duì)應(yīng)到 $http_host$request_uri 去了, $http_host 就是我們要訪問的主機(jī)名, $request_uri 就是我們后面所加的參數(shù)。

簡(jiǎn)單來說就是相當(dāng)于配置好了我們請(qǐng)求B服務(wù)器,B服務(wù)器再去請(qǐng)求我們所請(qǐng)求的地址。

那么接下來我們來看一下結(jié)果,我們?cè)诒镜嘏渲煤么恚疫@里是mac系統(tǒng),可以從網(wǎng)絡(luò)設(shè)置中選擇高級(jí),然后選擇代理。(這里是在 A服務(wù)器配置代理)

結(jié)果證明,此時(shí)在 A服務(wù)器 的客戶端已經(jīng)可以成功訪問 A 服務(wù)器的資源。

以上就是正向代理的一個(gè)場(chǎng)景演示,這個(gè)過程中可以知道,我們客戶端是想要 A 的資源,但是 A 的資源只有 B 能拿到,便讓 B 代理去幫助我們?cè)L問 A 的資源。整個(gè)過程 A 只知道 B 拿了它的資源,并不知道客戶端拿到。

2.2 反向代理配置場(chǎng)景演示
反向代理的演示更為簡(jiǎn)單一些。

  1. 首先我們新建一個(gè)test.conf的配置文件,啟動(dòng)對(duì)應(yīng)這個(gè)配置文件的服務(wù):
  1. server { 
  2.  
  3.   listen 8080; 
  4.  
  5.   server_name localhost; 
  6.  
  7.   location / { 
  8.  
  9.     root html; 
  10.  
  11.     index index.html index.htm; 
  12.  
  13.   } 
  14.  
  15.   error_page 500 502 503 504 404 /50x.html; 
  16.  
  17.   location = /50x.html { 
  18.  
  19.     root /usr/share/nginx/html; 
  20.  
  21.   } 
  22.  

可以看到 server 里 listen 的端口是8080,這里假設(shè)我的服務(wù)器本身不對(duì)外開放8080端口,只開放了80端口。所以此時(shí)訪問 test.html 結(jié)果是訪問不到的.

  1. 修改Nginx的默認(rèn)配置文件,添加 proxy_pass 設(shè)置如下:
  1. server { 
  2.  
  3.   listen 80; 
  4.  
  5.   server_name localhost; 
  6.  
  7.   location / { 
  8.  
  9.     root html; 
  10.  
  11.     index index.html index.htm; 
  12.  
  13.   } 
  14.  
  15.   #設(shè)置代理 
  16.  
  17.   location ~ /test.html$ { 
  18.  
  19.     proxy_pass http://127.0.0.1:8080; 
  20.  
  21.   } 
  22.  
  23.   error_page 500 502 503 504 404 /50x.html; 
  24.  
  25.   location = /50x.html { 
  26.  
  27.     root /usr/share/nginx/html; 
  28.  
  29.   } 
  30.  

此時(shí)便可以訪問8080端口配置的資源了,如下:

以上便完成了一個(gè)反向代理的演示,這個(gè)過程中我們可以知道,客戶端想要訪問的是 test.html,但是 test.html 實(shí)際上是 8080 端口下配置的,中間經(jīng)過了代理才能拿到。也就是說客戶端并不知道中間經(jīng)歷了什么代理過程,只有服務(wù)端知道??蛻舳酥恢浪玫搅?test.html 也就是8080端口下配置的資源。

3. 總結(jié)
經(jīng)過對(duì)正向代理和反向代理概念上的理解、區(qū)別,以及在Nginx下演示操作一遍,相信你可以深刻體會(huì)到正向代理與反向代理的區(qū)別,以及在Nginx下代理的簡(jiǎn)單配置。

正向代理和反向代理的區(qū)別在于代理的對(duì)象不一樣,正向代理的代理對(duì)象是客戶端,反向代理的代理對(duì)象是服務(wù)端??偨Y(jié)一下:

  • 代理服務(wù)器站在客戶端那邊就是正向代理
  • 代理服務(wù)器站在服務(wù)器那邊就是反向代理
  • Nginx 通過 proxy_pass 可以設(shè)置代理服務(wù)。

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2018-11-12 12:17:00

2019-08-26 10:31:12

正向代理反向代理安全

2023-09-08 00:07:41

2024-07-22 15:34:25

2021-07-29 11:15:25

Nginx網(wǎng)絡(luò)服務(wù)器

2019-06-19 15:34:39

Nginx反向代理負(fù)載均衡

2024-02-04 16:51:47

2021-03-16 21:42:37

反向代理正向代理

2019-06-18 09:45:19

正向代理反向代理IT

2022-07-01 07:33:24

nginx反向代理測(cè)試

2018-11-05 09:34:43

2019-11-04 15:35:53

Nginx反向代理負(fù)載均衡

2017-12-18 12:04:02

Nginx代理均衡

2019-09-18 10:39:08

負(fù)載均衡反向代理TCP

2018-04-17 12:10:40

2024-03-26 07:38:16

正向代理反向代理代碼

2023-12-05 09:14:54

2019-07-09 15:10:02

Nginx反向代理負(fù)載均衡

2017-09-06 10:14:29

Nginx TCPmail郵件

2020-07-28 15:10:34

Nginx反向代理負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)