简析“正向代理”与“反向代理”
“正向代理”與“反向代理”
概念
首先看看說明圖,先有一個整體的理解。
?
?
正向代理( Forward Proxy ):
是指是一個位于客戶端和原始服務(wù)器之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容, 客戶端向代理發(fā)送一個請求并指定目標(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端。客戶端才能使用正向代理。
反向代理( Reverse Proxy ):
是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。
接下來我提煉一下各自的特點。
特點
正向代理
反向代理
共同點
區(qū)別
說了這么多,現(xiàn)在說說代理在工作中的時機應(yīng)用場景吧。
實際應(yīng)用
FQ軟件 —— 正向代理
我們知道在國內(nèi)用訪問 www.google.com 是無法訪問的,因為正常情況下是會被 GFW 限制訪問的。
可是你還是想使用 google 的話,這個時候我們就需要一些代理(FQ軟件)來幫我們?nèi)フ埱?www.google.com,代理再把響應(yīng)結(jié)果返回給你。
GFW 的作用主要是用于分析和過濾中國境內(nèi)外網(wǎng)絡(luò)間的互相訪問。也就是說,他不僅能限制國內(nèi)網(wǎng)民訪問境外的某些站點,也能限制國外用戶訪問國內(nèi)的站點。 我們通常說的“被墻”,就是指訪問被 GFW 所限制。而”FQ“,顧名思義,則是突破 GFW 的限制。
Nginx 服務(wù)器 —— 反向代理
Nginx 服務(wù)器的功能有很多,諸如反向代理、負載均衡、靜態(tài)資源服務(wù)器等。
客戶端本來可以直接通過 HTTP 協(xié)議訪問服務(wù)器,不過我們可以在中間加上一個 Nginx 服務(wù)器,客戶端請求 Nginx 服務(wù)器,Nginx 服務(wù)器請求應(yīng)用服務(wù)器,然后將結(jié)果返回給客戶端,此時 Nginx 服務(wù)器就是反向代理服務(wù)器。
在虛擬主機的配置中配置反向代理
# 虛擬主機的配置 server {listen 8080; # 監(jiān)聽的端口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; # 被代理的應(yīng)用服務(wù)器 HTTP 地址 } } 復制代碼以上簡單的配置就可以實現(xiàn)反向代理的功能。
當然反向代理也可以處理跨域問題。
對于使用 vue-cli 搭建的工程而言,我們知道 vue-cli 采用 http-proxy-middleware 插件來進行代理服務(wù)器等各項配置。
所以我們可以利用 proxyTable,設(shè)置地址映射表。即使用 proxyTable 這個屬性進行相關(guān)的配置來解決跨域問題帶來的煩惱。配置如下:
... proxyTable: {'/weixin': {target: 'http://192.168.20.1:8080/', // 接口的域名secure: false, // 如果是 https 接口,需要配置這個參數(shù)changeOrigin: true, // 如果接口跨域,需要進行這個參數(shù)配置pathRewrite: {'^/weixin': '' } }, }, ... 復制代碼負載均衡的配置
# upstream 表示負載服務(wù)器池,定義名字為 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 內(nèi)嘗試 2 次失敗即認為主機不可用} 復制代碼負載均衡即將 請求/數(shù)據(jù) 輪詢分攤到多個服務(wù)器上執(zhí)行,負載均衡的關(guān)鍵在于 均勻。
也可以通過 ip-hash 的方式,根據(jù)客戶端 ip 地址的 hash 值將請求分配給固定的某一個服務(wù)器處理。
另外,服務(wù)器的硬件配置可能不同,配置好的服務(wù)器可以處理更多的請求,這時可以通過 weight 參數(shù)來控制。
?
轉(zhuǎn)載于:https://www.cnblogs.com/weilingfeng/p/10922221.html
總結(jié)
以上是生活随笔為你收集整理的简析“正向代理”与“反向代理”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode--爬楼梯
- 下一篇: 纯css实现三角原理,兼容IE