成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圖解「正向代理」的原理 + 實踐應(yīng)用

開發(fā) 前端
每一種設(shè)計模式都會配套合適的真實場景案例,加上“老王”耐心的講解,小菜下班后自己不斷總結(jié)和思考,隨后,將其使用到真實場景中。整個過程,實際上就是需求在驅(qū)動。

你好,我是悟空。

本文主要內(nèi)容如下:

圖片圖片

在工作中經(jīng)常和正向代理和反向代理打交道,有必要總結(jié)下正向代理的原理和實踐應(yīng)用了。(反向代理安排在下篇吧)

如何理解正向代理

代理(Proxy)服務(wù)通常被我們稱為正向代理服務(wù),如下圖所示:

圖片圖片

  • 客戶端:圖中的客戶端我用電腦和手機作為示意,客戶端指在計算機網(wǎng)絡(luò)中與服務(wù)器進行通信的一種計算機程序或設(shè)備。客戶端通常請求服務(wù)器提供某種服務(wù),如獲取網(wǎng)頁、發(fā)送電子郵件、下載文件等。客戶端與服務(wù)器之間的通信通常遵循客戶端-服務(wù)器模型,其中客戶端發(fā)出請求,而服務(wù)器響應(yīng)這些請求。
  • 站點:可以理解為網(wǎng)絡(luò)中的目標(biāo)服務(wù)器,當(dāng)客戶端想要訪問目標(biāo)服務(wù)器的資源時,需要通過網(wǎng)絡(luò)通信才能獲取到資源。
  • 正向代理服務(wù)器:在客戶端和站點之間,起到了一個轉(zhuǎn)發(fā)請求的作用。正向代理服務(wù)器不支持外部對內(nèi)部網(wǎng)絡(luò)的訪問請求。正向代理服務(wù)器和客戶端是緊密聯(lián)系的,我們工作中用到的 VPN(虛擬專用網(wǎng)絡(luò)) 就是一種正向代理的方式。
  • 箭頭:箭頭的方向代表訪問的方向。

大白話聊聊正向代理

一位企業(yè)老總,他有一位助理小李,當(dāng)老總想要訂火車票時,就會委托小李幫忙訂票,當(dāng)老總想要訂酒店時,小李就會負責(zé)查找合適的酒店并安排老總?cè)胱 V硇±顜屠峡傓k了很多事情,也就是代理了一些事情,而助理小李就充當(dāng)了一個代理服務(wù)器的角色。如下圖所示:

圖片圖片

正向代理的作用

企業(yè)可以使用正向代理來增強網(wǎng)絡(luò)安全、訪問控制、性能優(yōu)化和隱私保護等方面的功能。以下是企業(yè)中如何使用正向代理的一些常見場景和方法:

  • 遠程辦公: 在遠程辦公環(huán)境中,企業(yè)可以使用正向代理來幫助員工安全地連接到公司內(nèi)部網(wǎng)絡(luò),訪問內(nèi)部資源,而不必暴露公司的內(nèi)部網(wǎng)絡(luò)直接在互聯(lián)網(wǎng)上。
  • 訪問控制和安全性: 企業(yè)可以在其網(wǎng)絡(luò)中部署正向代理服務(wù)器,以實施訪問控制策略。通過正向代理,可以限制員工訪問特定網(wǎng)站或互聯(lián)網(wǎng)資源,從而減少潛在的網(wǎng)絡(luò)威脅。這有助于保護企業(yè)免受惡意軟件、惡意網(wǎng)站和網(wǎng)絡(luò)攻擊的影響。
  • 內(nèi)容過濾和緩存: 正向代理可以用于過濾和緩存網(wǎng)絡(luò)內(nèi)容,以提高性能并減少帶寬消耗。代理服務(wù)器可以緩存常用的資源,例如網(wǎng)頁、圖像和視頻,從而減少對外部服務(wù)器的請求,提高用戶體驗。
  • 安全審計和監(jiān)控: 企業(yè)可以使用正向代理來監(jiān)視員工的網(wǎng)絡(luò)活動,以確保合規(guī)性和安全性。代理服務(wù)器可以記錄訪問日志,以便后續(xù)的安全審計和監(jiān)控。
  • 反病毒和惡意軟件保護: 正向代理可以用于檢測和攔截網(wǎng)絡(luò)流量中的惡意軟件、病毒和惡意鏈接。這有助于保護企業(yè)內(nèi)部網(wǎng)絡(luò)免受惡意軟件的傳播和感染。
  • 隱私保護: 企業(yè)可以使用正向代理來保護員工的隱私。代理服務(wù)器可以隱藏員工的真實IP地址,從而提高員工的在線隱私。
  • 訪問受限資源: 有些企業(yè)需要訪問特定地理位置或IP受限的互聯(lián)網(wǎng)資源。正向代理可以用于繞過這些限制,以訪問需要的資源。
  • 負載均衡: 企業(yè)可以使用正向代理來實現(xiàn)負載均衡,將客戶端請求分發(fā)到多個服務(wù)器,以提高性能和可用性。這對于高流量的企業(yè)應(yīng)用程序和網(wǎng)站非常有用。

企業(yè)中如何使用正向代理

在企業(yè)中,正向代理工具用于多種場景,以增強網(wǎng)絡(luò)安全性、訪問控制、性能優(yōu)化和隱私保護。以下是一些常見的正向代理工具和它們在不同場景中的用途:

  • Nginx: Nginx 是一款高性能的反向代理服務(wù)器,但也可以配置為正向代理。它通常被用于負載均衡、訪問控制和內(nèi)容緩存。
  • 自建VPN: 一些企業(yè)和個人選擇自行搭建虛擬私人網(wǎng)絡(luò)(VPN)來實現(xiàn)正向代理功能。這可以通過使用開源VPN軟件如OpenVPN或商業(yè)VPN服務(wù)來實現(xiàn)。
  • CDN服務(wù): 一些CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))服務(wù)提供商也提供正向代理功能,以加速訪問、緩存內(nèi)容和提供安全性。
  • Squid: Squid 是一個開源的代理服務(wù)器軟件,被廣泛用于企業(yè)和學(xué)校網(wǎng)絡(luò)中。它提供了強大的訪問控制、緩存和性能優(yōu)化功能,常用于網(wǎng)絡(luò)管理和內(nèi)容過濾。
  • CCProxy(若快代理服務(wù)器): CCProxy 是一款商業(yè)代理服務(wù)器軟件,又稱為"若快",它提供了訪問控制、帶寬控制和網(wǎng)絡(luò)加速功能。
  • TinyProxy: TinyProxy 是一個輕量級的代理服務(wù)器軟件,適用于小型網(wǎng)絡(luò)環(huán)境。它的配置相對簡單,適合快速搭建正向代理。
  • Glype: Glype 是一個基于Web的代理腳本,可以讓用戶通過瀏覽器訪問被封鎖的網(wǎng)站。它常被用于構(gòu)建Web代理服務(wù),以繞過互聯(lián)網(wǎng)審查。

項目中如何使用正向代理

以下是一個 Nginx 的正向代理的配置,

http {
    server {
        listen       80;
        server_name  www.passjava.cn;

        location / {
            proxy_pass http://target_server;
            proxy_set_header Host $host;
        }
    }
}

上述配置表明當(dāng)客戶端通過瀏覽器或其他方式發(fā)送請求到 www.passjava.cn 這個域名時,Nginx 將監(jiān)聽 HTTP 請求的端口 80,并將這些請求代理到 target_server 指定的目標(biāo)服務(wù)器。這是一個典型的正向代理配置,用于隱藏客戶端的真實 IP 地址,同時將請求轉(zhuǎn)發(fā)到其他服務(wù)器上。這在一些網(wǎng)絡(luò)安全和訪問控制方面非常有用。

真實場景的一個應(yīng)用

我們項目中大量使用 Nginx 作為正向代理和反向代理,這里舉一個我用 Nginx 作為正向代理的真實案例。

背景

公司生產(chǎn)一些硬件設(shè)備,而這些設(shè)備在生產(chǎn)的過程中,需要調(diào)用我們后臺系統(tǒng)的接口,我們后臺系統(tǒng)所在的網(wǎng)絡(luò)和設(shè)備的網(wǎng)絡(luò)并不在同一個網(wǎng)段內(nèi),想要實現(xiàn)網(wǎng)絡(luò)互通,我們在設(shè)備和系統(tǒng)之間加了一層正向代理服務(wù)器,設(shè)備先將請求發(fā)送給代理服務(wù)器,由代理服務(wù)器將請求轉(zhuǎn)發(fā)給后臺系統(tǒng)。

解決方案

如下圖所示:

圖片圖片

設(shè)備 1 和設(shè)備 2 的 IP 在 192.168.1.0/24 IP 地址段內(nèi),HTTP 請求先發(fā)到代理服務(wù)器,然后轉(zhuǎn)發(fā)到后臺服務(wù)器集群的網(wǎng)關(guān)地址(192.168.52.123)。

代理服務(wù)器上有兩個網(wǎng)卡,和設(shè)備之間的網(wǎng)絡(luò)是通的,和服務(wù)器集群之間的網(wǎng)絡(luò)也是通的。這樣就能保證設(shè)備的請求能夠正常發(fā)送到系統(tǒng)了。

疑問:為啥不把后臺系統(tǒng)的服務(wù)器 IP 改成和設(shè)備同一網(wǎng)段?

答:問題出在不能保證設(shè)備和后臺系統(tǒng)在同一局域網(wǎng)內(nèi)。有的設(shè)備是在其他局域網(wǎng)內(nèi)生產(chǎn)的,即使在同一個網(wǎng)段內(nèi),但是是跨局域網(wǎng)的,設(shè)備和后臺系統(tǒng)也是無法連通的。

完整的 NGINX 配置如下:

圖片圖片

正向代理后如何獲取真實 IP

另外我們的系統(tǒng)還需要獲取設(shè)備的真實 IP,這就需要在 Nginx 加上配置:

# location 模塊中加入以下配置:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

上述配置可以暴露客戶端的真實 IP 地址給目標(biāo)服務(wù)器,特別是 proxy_set_header X-Real-IP $remote_addr; 和 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 這兩行配置。

讓我解釋一下這三行配置的含義:

  1. proxy_set_header Host $host;:這一行配置將客戶端請求中的 Host 頭部信息傳遞給目標(biāo)服務(wù)器。這是正常的 HTTP 頭部信息傳遞,不涉及客戶端 IP 地址。
  2. proxy_set_header X-Real-IP $remote_addr;:這一行配置將客戶端的真實 IP 地址作為 X-Real-IP 頭部信息傳遞給目標(biāo)服務(wù)器。這意味著目標(biāo)服務(wù)器可以訪問到客戶端的真實 IP 地址。
  3. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:這一行配置將客戶端的 IP 地址添加到 X-Forwarded-For 頭部信息中,并傳遞給目標(biāo)服務(wù)器。這是為了記錄代理請求的前幾個客戶端的 IP 地址,通常包括客戶端的真實 IP 地址。

當(dāng)目標(biāo)服務(wù)器收到這些頭部信息時,它可以通過 X-Real-IP 或 X-Forwarded-For 頭部來獲取客戶端的真實 IP 地址。

容易誤以為的正向代理

比如我的網(wǎng)站項目 passjava.cn,項目是純靜態(tài)頁面,部署在了一臺服務(wù)器上。如下圖所示,當(dāng)我在瀏覽器訪問這個域名時,請求會先經(jīng)過 DNS 域名解析,拿到域名綁定的 IP 地址,而這個 IP 地址又是我購買的云服務(wù)器地址,在這個服務(wù)器上有網(wǎng)站的靜態(tài)頁面。

圖片圖片

以下是 Nginx 的配置:

server {
    listen       80;
    server_name  www.passjava.cn;

    location / {
        root   /home/ubuntu/docs;
        index  index.html;
    }
}

我開始以為這是一個正向代理的配置,其實并不是,這個配置只是一個簡單的虛擬主機配置,用于托管靜態(tài)網(wǎng)站。這個配置定義了一個 Nginx 虛擬主機,用于處理來自 www.passjava.cn 域名的 HTTP 請求,并提供靜態(tài)網(wǎng)頁。

解釋下這些配置項含義:

  1. server { ... }:這是一個 server 塊,用于定義一個虛擬主機。每個 server 塊通常用于配置一個不同的虛擬主機,以處理特定域名或 IP 地址的請求。
  2. listen 80;:這一行指定了監(jiān)聽的端口號,這里是 80,表示該虛擬主機將處理來自客戶端的 HTTP 請求,這是 HTTP 的標(biāo)準端口號。
  3. server_name www.passjava.cn;:這一行定義了虛擬主機所處理的域名。在這個例子中,虛擬主機將處理來自 www.passjava.cn 域名的請求。當(dāng)客戶端發(fā)送請求到這個域名時,Nginx 將使用這個 server 塊中的配置來響應(yīng)請求。
  4. location / { ... }:這是一個 location 塊,它定義了如何處理特定 URI(統(tǒng)一資源標(biāo)識符)路徑的請求。在這里,location / 匹配所有請求的根路徑。
  5. root /home/ubuntu/docs;:這一行指定了 Nginx 服務(wù)器上要提供的文件的根目錄。當(dāng)客戶端請求根路徑時,Nginx 將在 /home/ubuntu/docs 目錄中查找文件來提供給客戶端。
  6. index index.html;:這一行指定了默認的索引文件,當(dāng)客戶端請求的路徑是一個目錄時,Nginx 將嘗試提供 index.html 文件作為默認文檔。如果 /home/ubuntu/docs 目錄中存在 index.html 文件,它將作為默認文檔提供給客戶端。

注意:正向代理配置通常涉及將客戶端的請求代理到其他服務(wù)器,而不是提供自己的網(wǎng)頁內(nèi)容。正向代理的配置會包括一些額外的代理設(shè)置,用于將請求轉(zhuǎn)發(fā)到目標(biāo)服務(wù)器,而不是提供本地靜態(tài)文件。

- END -

關(guān)于我

InfoQ 簽約作者、藍橋簽約作者、阿里云專家博主、51CTO 紅人。

責(zé)任編輯:武曉燕 來源: 悟空聊架構(gòu)
相關(guān)推薦

2023-09-08 00:07:41

2018-11-12 12:17:00

2024-07-22 15:34:25

2020-10-22 08:05:46

Nginx

2019-08-26 10:31:12

正向代理反向代理安全

2025-05-08 02:00:00

2024-02-04 16:51:47

2021-03-16 21:42:37

反向代理正向代理

2018-04-17 12:10:40

2010-02-04 10:17:38

Android應(yīng)用程序

2019-06-18 09:45:19

正向代理反向代理IT

2009-07-15 09:21:56

MyEclipse代理MyEclipse下載

2021-07-29 11:15:25

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

2024-03-26 07:38:16

正向代理反向代理代碼

2010-08-30 17:13:01

DHCP中繼代理

2022-11-08 00:00:00

監(jiān)控系統(tǒng)Prometheus

2021-02-05 15:01:41

GitLinux命令

2024-02-20 14:53:01

2019-07-09 14:57:09

代理服務(wù)器NginxHTTPS

2010-06-29 17:07:10

Linux SNMP代
點贊
收藏

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

主站蜘蛛池模板: 综合成人在线 | 亚洲成人自拍 | 男女视频在线免费观看 | 国产精品久久久久久久午夜片 | 亚洲久久在线 | 欧美一区二区三区视频在线播放 | 欧美一级在线观看 | 成人一区在线观看 | 成人自拍视频网站 | 国产午夜精品一区二区三区嫩草 | 超碰国产在线 | 久干网 | 成人性视频在线播放 | 欧美四虎| 日韩一区中文字幕 | 日韩和的一区二区 | 91在线| 欧美精品欧美精品系列 | 91在线视频在线观看 | 97视频免费 | 欧美午夜影院 | 91在线一区二区三区 | 日韩av成人 | 精品一区二区在线观看 | 日韩美女爱爱 | 国产精品久久久久一区二区 | 亚洲精品国产第一综合99久久 | 亚洲精品成人在线 | 国产精品久久久久久久久久 | 在线免费观看日本视频 | 性一交一乱一透一a级 | 国产福利在线看 | 日韩国产在线 | 九九热精 | 在线亚洲一区 | 亚洲欧美日韩一区二区 | 亚洲精品久久 | 欧洲av一区 | 免费看a | 国产在线激情视频 | 久久av一区二区三区 |