🔵 Forward Proxy
Đứng trước client. Đại diện cho client gửi request đến Internet. Client biết proxy, server không biết client.
🟡 Reverse Proxy
Đứng trước server. Đại diện cho server nhận request từ Internet. Client không biết backend, server biết proxy.
1. Forward Proxy Là Gì?
Forward Proxy (Proxy xuôi):
Client A ──┐
Client B ──┼──→ [Forward Proxy] ──→ Internet ──→ Server
Client C ──┘
↑
Proxy đại diện
cho CLIENTS
Forward Proxy là server trung gian đứng giữa client và Internet. Client cấu hình để gửi request qua proxy, proxy sẽ gửi request đến server đích thay cho client.
Use cases:
- Ẩn danh (Anonymity): Server chỉ thấy IP của proxy, không thấy IP client thật
- Bypass restrictions: Truy cập website bị chặn (VPN hoạt động tương tự)
- Content filtering: Công ty chặn nhân viên truy cập Facebook, YouTube
- Caching: Cache response để các client khác dùng lại (ISP proxy)
- Logging/Monitoring: Theo dõi traffic của users trong mạng LAN
# Squid Forward Proxy - squid.conf
http_port 3128
# Chỉ cho phép mạng nội bộ
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
# Chặn Facebook
acl blocked_sites dstdomain .facebook.com .youtube.com
http_access deny blocked_sites
# Caching
cache_mem 256 MB
maximum_object_size 100 MB
2. Reverse Proxy Là Gì?
Reverse Proxy (Proxy ngược):
┌──→ Backend 1
Internet ──→ Client ──→ [Reverse Proxy] ──┼──→ Backend 2
└──→ Backend 3
↑
Proxy đại diện
cho SERVERS
Reverse Proxy đứng trước backend servers. Client gửi request đến reverse proxy (nghĩ đó là server thật), proxy chuyển tiếp đến backend phù hợp.
Use cases:
- Load Balancing: Phân phối traffic giữa nhiều backends
- SSL Termination: Xử lý HTTPS tại proxy, backend chỉ cần HTTP
- Caching: Cache static content, giảm tải backend
- Security: Ẩn IP/port backend, WAF, DDoS protection
- Compression: Gzip/Brotli response trước khi gửi client
# NGINX Reverse Proxy
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
}
3. Bảng So Sánh
| Tiêu chí | 🔵 Forward Proxy | 🟡 Reverse Proxy |
|---|---|---|
| Vị trí | Trước client | Trước server |
| Đại diện cho | Client (users) | Server (backend) |
| Client có biết? | Có — client cấu hình proxy | Không — client nghĩ đó là server thật |
| Server có biết? | Không — server thấy IP proxy | Có — server biết proxy |
| Mục đích chính | Ẩn danh, bypass, filtering | Load balancing, SSL, caching, security |
| Ai cấu hình? | Client (hoặc network admin) | Server admin / DevOps |
| Ví dụ | Squid, VPN, Corporate proxy | NGINX, HAProxy, Cloudflare |
4. Ví Dụ Dễ Hiểu
🏠 Ví dụ đời thường:
Forward Proxy = Bạn nhờ một người bạn mua hộ hàng online. Người bán chỉ biết
người bạn, không biết bạn.
Reverse Proxy = Bạn gọi đến tổng đài 1900. Tổng đài viên nhận cuộc gọi rồi
chuyển đến đúng phòng ban. Bạn không biết phòng ban nào xử lý.
5. Khi Nào Dùng?
Dùng Forward Proxy khi:
• Cần ẩn danh/bypass firewall
• Corporate network filtering
• Kiểm soát truy cập Internet nội bộ
Dùng Reverse Proxy khi:
• Deploy web app production
• Cần SSL termination, load balancing
• Bảo vệ backend servers
• Serve multiple apps trên cùng domain