Reverse proxy là một loại máy chủ proxy hoạt động như một trung gian giữa khách hàng (client) và một hoặc nhiều máy chủ gốc (backend servers). Khi khách hàng gửi yêu cầu đến máy chủ, yêu cầu này sẽ được chuyển đến reverse proxy, và reverse proxy sẽ gửi yêu cầu đến máy chủ gốc phù hợp và sau đó trả lại phản hồi đến khách hàng.
Chức Năng và Lợi Ích của Reverse Proxy
Cân Bằng Tải (Load Balancing):
- Reverse proxy có thể phân phối yêu cầu giữa nhiều máy chủ backend để cân bằng tải và cải thiện hiệu suất của hệ thống.
Tăng Cường Bảo Mật:
- Reverse proxy có thể ẩn địa chỉ IP của các máy chủ backend, giúp bảo vệ chúng khỏi các tấn công mạng trực tiếp. Nó cũng có thể thực hiện các chức năng bảo mật như mã hóa SSL/TLS, xác thực người dùng, và chống tấn công DDoS.
Tối Ưu Hóa Hiệu Suất:
- Reverse proxy có thể thực hiện các tác vụ như nén nội dung và cache để cải thiện hiệu suất và giảm tải cho máy chủ backend.
Tăng Cường Độ Tin Cậy và Khả Năng Khôi Phục:
- Reverse proxy có thể giúp phân phối yêu cầu đến các máy chủ đang hoạt động và chuyển hướng yêu cầu từ các máy chủ không khả dụng, giúp tăng tính sẵn sàng và độ tin cậy của hệ thống.
Hỗ Trợ Các Giao Thức Mới:
- Reverse proxy có thể cung cấp hỗ trợ cho các giao thức mới như HTTP/2 hoặc HTTP/3 mà các máy chủ backend chưa hỗ trợ trực tiếp.
Cách Hoạt Động của Reverse Proxy
Nhận Yêu Cầu từ Khách Hàng:
- Khi khách hàng gửi một yêu cầu (request) đến một trang web hoặc dịch vụ, yêu cầu này được gửi đến reverse proxy thay vì trực tiếp đến máy chủ gốc.
Chuyển Tiếp Yêu Cầu đến Máy Chủ Backend:
- Reverse proxy tiếp nhận yêu cầu từ khách hàng và quyết định máy chủ backend nào sẽ xử lý yêu cầu đó. Nó có thể dựa vào các yếu tố như cân bằng tải, phân phối địa lý, hoặc loại yêu cầu.
Nhận Phản Hồi từ Máy Chủ Backend:
- Sau khi máy chủ backend xử lý yêu cầu, phản hồi được gửi trở lại reverse proxy.
Gửi Phản Hồi đến Khách Hàng:
- Reverse proxy nhận phản hồi từ máy chủ backend và gửi nó trở lại khách hàng.
Các Phần Mềm Reverse Proxy Phổ Biến
- Nginx: Cung cấp tính năng reverse proxy mạnh mẽ, cân bằng tải, và hỗ trợ các giao thức như HTTP/2 và HTTP/3.
- Apache HTTP Server: Có thể cấu hình để hoạt động như một reverse proxy và hỗ trợ các tính năng bảo mật và cân bằng tải.
- Caddy: Dễ cấu hình và hỗ trợ HTTP/3 cùng với các tính năng reverse proxy.
- HAProxy: Được biết đến với khả năng cân bằng tải và bảo mật mạnh mẽ.
Ví Dụ Về Cấu Hình Reverse Proxy với Nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend-server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Trong ví dụ trên, Nginx đóng vai trò là reverse proxy và chuyển tiếp yêu cầu từ example.com
đến backend-server
. Các tiêu đề HTTP cũng được thiết lập để duy trì thông tin về yêu cầu gốc.