Proxy 是位於 Client 和 Server 之間的 Server,Client 會向 Proxy 發送請求, Proxy 會轉發請求到 Server,並將 Server 的回應返回給 Client。Proxy 可以用來隱藏 Client IP,並提供 Cache 功能,提高網站的訪問速度。 Reverse Proxy 是位於 Server 的 Server ,Client 會向 Reverse Proxy 發送請求, Reverse Proxy 會根據請求的內容,將請求轉發到不同的 Server ,並將 Server 的回應返回給 Client 。 Reverse Proxy 可以用來負載均衡、Cache、安全防護等。
功用
Proxy
- 隱藏 Client IP:當Client 訪問網站時,可以使用 Proxy 來隱藏 Client IP,這可以保護用戶隱私。
- 提供 Cache 功能:Proxy 可以提供 Cache 功能,提高網站的訪問速度。當 Client 第一次訪問網站時, Proxy 會將網站的內容 Cache 到自己的內存中,當 Client 再次訪問網站時, Proxy 會直接返回 Cache 的內容,這可以提高網站的訪問速度。
Reverse Proxy
- 負載均衡:Reverse Proxy 可以用來負載均衡,將用戶的請求均勻分散到不同的 Server ,這可以提高網站的性能和可用性。
- Cache:Reverse Proxy 可以提供 Cache 功能,提高網站的訪問速度。當 Client 第一次訪問網站時, Reverse Proxy 會將網站的內容 Cache 到自己的內存中,當 Client 再次訪問網站時, Reverse Proxy 會直接返回 Cache 的內容,這可以提高網站的訪問速度。
- 安全防護:Reverse Proxy 可以用來安全防護,例如可以用來防火牆、DDoS 攻擊等。
細節
Proxy
代理的對象是 Client ,Client 過程隱藏 Client IP,Server 不知道拜訪的 Client 是誰。
- 可以拜訪鎖區網站,常見案例為 VPN 就是 Proxy 的經典用例。
- 隱藏真實 IP,只有 Proxy Server 才知道 Client IP。
- Proxy Server 可以做 Cache 並返回 Cache 提升訪問速度。
Reverse Proxy
代理的對象是 Server,所以 Client 不知道具體是拜訪哪台 Server。
- 可以做負載均衡,可以根據不同狀況分發請求。
- Cache。
- Reverse Proxy Server 內可以做 firewall 跟安全防護。
Nginx 配置
Proxy
透過 proxy_pass
配置代理地址 http://google.com
,當請求 http://example.com
轉發到 http://google.com
。
server {
server_name example.com;
listen 80;
location / {
proxy_pass http://google.com;
proxy_set_header HOST $host;
}
}
Reverse Proxy
需要配置 conf/nginx.conf
來達到此作用:
http {
keepalive_timeout 120;
tcp_nodelay on;
# Server list
upstream example.com {
# weight 權重配置越高被分配到機率越大
server 192.168.1.11:80 weight=5;
server 192.168.1.12:80 weight=1;
server 192.168.1.13:80 weight=6;
}
server {
listen 80;
server_name example.com;
charset utf-8;
location / {
proxy_pass http://example.com;
}
}
}
結論
- Proxy、Reverse Proxy 目標對象不同,一個面向 Client,一個面向 Server。
- 不論是 Proxy、Reverse Proxy 都可以提供資源緩存 Cache 與安全防護,都是在 Proxy Server 這邊做處理,一個是安全防護 Client,一個是安全防護 Server(面向對象不同)。
ref: