正向代理和反向代理的區別


一、正向代理和反向代理的區別

正向代理是代為處理客戶端的請求的中介稱為正向代理,反向代理是代為處理服務端的響應的中介稱為反向代理。

1.1正向代理

代理,生活中常見的代理商,比如要買一台mac,有兩種方式:

  • 第一種,找代購,去香港的mac經銷商購買一台mac , 那么這個代購就是“正向代理”,正向代理,代為處理的是客戶的請求(request)
  • 第二種,去京東購買,蘋果把mac放京東上,我們直接在京東上購買。京東就是蘋果的反向代理,代為處理的是服務商的貨源(response)

 

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

舉例:FQ

正向代理中被代理的是客戶端的請求

1.2 反向代理

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

二、nginx反向代理的使用

在nginx的配置文件nginx.conf中新建一個虛擬主機的配置,

1
2
3
4
5
6
7
8
server {
     listen    8080;
     server_name localhost;
     
     location /category/ {
       proxy_pass http: //localhost ;
     }
   }

以上的配置中,

listen 表示nginx要監聽的端口;

server_name 就是訪問nginx時在瀏覽器中輸入的域名,可以直接填ip地址,要綁定多個可以用空格隔開;

location 表示nginx監聽該端口時要匹配的url,如果訪問nginx的url中包含有/category/就執行代理

proxy_pass 表示nginx要把客戶端的請求代理到的目標。

注意這里proxy_pass的路徑寫法,如果像上邊這樣,路徑的結尾不帶/,表示的是相對路徑,那么nginx在轉發請求時不會截取掉原始url中的/category/ ,如瀏覽器訪問http://localhost:8080/category/findAll,那么nginx實際發出的請求地址是http://localhost/category/findAll。

如果proxy_pass的目標路徑配置時 末尾帶上了/ ,表示的是絕對路徑,那么nginx在轉發請求時就會截取掉原始url中的/category/ ,如瀏覽器訪問http://localhost:8080/category/findAll,那么nginx實際發出的請求地址是http://localhost/findAll。

在配置時要根據自己的需要決定是否需要帶 /,不然實際使用時nginx會一直報404的錯誤。

我這里的配置因為我的后端接口路徑中包含了/category,所以我使用了相對路徑,保留了這個

 

轉載自:https://www.jb51.net/article/182171.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM