'“正向代理”和“反向代理”你還傻傻分不清?'

"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


解釋了這麼久,不知道是真的懂了,還是因為太困了。不過我有錢吃肉了。

接下來我們就認真的看看“正向代理”和“反向代理”。

正向代理和反向代理概念

首先看看說明圖,先有一個整體的理解:


"

我家老闆看過這篇文章之後的評價是:寫的不錯,語句是通順的,排版是可以的,但反向代理是什麼還是不清楚。所以我就嘗試著向非 IT 工作者解釋“正向代理”和“反向代理”。


“正向代理”和“反向代理”你還傻傻分不清?


接下來我會先嚐試面向大眾,來解釋“代理”的概念,再從專業的角度解釋“正向代理”和“反向代理”。

概念實例化

在講代理的概念之前我先講個類比,也是我向我家老闆解釋的過程:


“正向代理”和“反向代理”你還傻傻分不清?


還好我反應機敏,要不然這個月的零花錢就要替我擋一刀了。可是我該怎麼解釋呢?還要讓沒有編程語言基礎的人也聽懂,傷腦筋啊!

在沒有思緒的時候,她突然問我晚上吃了沒有?這不就是很好的例子嗎?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


“正向代理”和“反向代理”你還傻傻分不清?


解釋了這麼久,不知道是真的懂了,還是因為太困了。不過我有錢吃肉了。

接下來我們就認真的看看“正向代理”和“反向代理”。

正向代理和反向代理概念

首先看看說明圖,先有一個整體的理解:


“正向代理”和“反向代理”你還傻傻分不清?


正向代理( Forward Proxy ):是一個位於客戶端和原始服務器之間的服務器,為了從原始服務器取得內容, 客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端。客戶端才能使用正向代理。

反向代理( Reverse Proxy ):是指以代理服務器來接受 Internet 上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給 Internet 上請求連接的客戶端,此時代理服務器對外就表現為一個反向代理服務器。

接下來我提煉一下各自的特點:

正向代理:

  • 代理客戶。
  • 隱藏真實的客戶,為客戶端收發請求,使真實客戶端對服務器不可見。
  • 一個局域網內的所有用戶可能被一臺服務器做了正向代理,由該臺服務器負責 HTTP 請求。
  • 意味著同服務器做通信的是正向代理服務器。

反向代理:

  • 代理服務器。
  • 隱藏了真實的服務器,為服務器收發請求,使真實服務器對客戶端不可見。
  • 負載均衡服務器,將用戶的請求分發到空閒的服務器上。
  • 意味著用戶和負載均衡服務器直接通信,即用戶解析服務器域名時得到的是負載均衡服務器的 IP。

共同點:

  • 都是做為服務器和客戶端的中間層。
  • 都可以加強內網的安全性,阻止 Web 攻擊。
  • 都可以做緩存機制,提高訪問速度。

區別:

  • 正向代理其實是客戶端的代理,反向代理則是服務器的代理。
  • 正向代理中,服務器並不知道真正的客戶端到底是誰;而在反向代理中,客戶端也不知道真正的服務器是誰。
  • 作用不同。正向代理主要是用來解決訪問限制問題;而反向代理則是提供負載均衡、安全防護等作用。

說了這麼多,現在說說代理在工作中的時機應用場景吧。

實際應用

上網軟件:正向代理

我們知道在國內用訪問 www.google.com 是無法訪問的,因為正常情況下是會被 GFW 限制訪問的。

可是你還是想使用 Google 來科學上網的話,這個時候我們就需要一些代理來幫我們去請求 www.google.com,代理再把響應結果返回給你。

GFW 的作用主要是用於分析和過濾中國境內外網絡間的互相訪問。也就是說,他不僅能限制國內網民訪問境外的某些站點,也能限制國外用戶訪問國內的站點。

我們通常說的“被牆”,就是指訪問被 GFW 所限制,顧名思義,則是突破限制。

Nginx 服務器:反向代理

Nginx 服務器的功能有很多,諸如反向代理、負載均衡、靜態資源服務器等。

客戶端本來可以直接通過 HTTP 協議訪問服務器,不過我們可以在中間加上一個 Nginx 服務器,客戶端請求 Nginx 服務器,Nginx 服務器請求應用服務器,然後將結果返回給客戶端,此時 Nginx 服務器就是反向代理服務器。

在虛擬主機的配置中配置反向代理:

# 虛擬主機的配置 
server {
listen 8080; # 監聽的端口
server_name 192.168.1.1; # 配置訪問域名
root /data/toor; # 站點根目錄
error_page 502 404 /page/404.html; # 錯誤頁面
location ^~ /api/ { # 使用 /api/ 代理 proxy_pass 的值
proxy_pass http://192.168.20.1:8080; # 被代理的應用服務器 HTTP 地址
}
}

以上簡單的配置就可以實現反向代理的功能。當然反向代理也可以處理跨域問題。

對於使用 vue-cli 搭建的工程而言,我們知道 vue-cli 採用 http-proxy-middleware 插件來進行代理服務器等各項配置。

所以我們可以利用 proxyTable,設置地址映射表。即使用 proxyTable 這個屬性進行相關的配置來解決跨域問題帶來的煩惱。

配置如下:

proxyTable: { 
'/weixin': {
target: 'http://192.168.20.1:8080/', // 接口的域名
secure: false, // 如果是 https 接口,需要配置這個參數
changeOrigin: true, // 如果接口跨域,需要進行這個參數配置
pathRewrite: {
'^/weixin': ''
}
}
}

負載均衡的配置:

# upstream 表示負載服務器池,定義名字為 my 
upstream my {
server 192.168.2.1:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.2.2:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.2.3:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.2.4:8080 weight=1 max_fails=2 fail_timeout=30s;
# 即在 30s 內嘗試 2 次失敗即認為主機不可用
}

負載均衡即將 請求/數據 輪詢分攤到多個服務器上執行,負載均衡的關鍵在於均勻。

也可以通過 ip-hash 的方式,根據客戶端 IP 地址的 Hash 值將請求分配給固定的某一個服務器處理。

另外,服務器的硬件配置可能不同,配置好的服務器可以處理更多的請求,這時可以通過 weight 參數來控制。

作者:小生方勤來源:小生方勤

"

相關推薦

推薦中...