Reverse proxy là gì và khác forward proxy như thế nào
Cập nhật:
Reverse proxy là máy chủ đứng trước một hoặc nhiều máy chủ website, nhận yêu cầu từ người dùng rồi chuyển tới máy chủ phía sau, sau đó trả kết quả về như thể chính nó là website. Người truy cập chỉ thấy reverse proxy, không biết máy chủ thật ở đâu. Nginx, HAProxy, Caddy hay dịch vụ CDN đều thường được dùng làm reverse proxy để cân bằng tải, xử lý HTTPS, lưu bộ nhớ đệm và che máy chủ gốc. Ngược lại, forward proxy (loại proxy bạn mua để đổi IP) đứng về phía người dùng: nó đại diện cho bạn khi đi ra Internet, website chỉ thấy IP của proxy. Nói ngắn gọn, forward proxy che người dùng, reverse proxy che máy chủ. Bài này giải thích hai loại, có ví dụ cấu hình nginx và chỉ ra ai cần loại nào.
Forward proxy: đại diện cho người dùng
Forward proxy nằm giữa thiết bị của bạn và Internet. Bạn cấu hình trình duyệt hoặc phần mềm để gửi yêu cầu qua proxy; proxy thay bạn kết nối tới website. Website thấy IP của proxy, không thấy IP của bạn. Đây là loại proxy được bàn trong phần lớn bài viết trên trang này, từ proxy là gì tới các bài về IPv4 và ISP.
Người dùng forward proxy thường muốn: truy cập từ một quốc gia khác, tách IP cho nhiều tài khoản, thu thập dữ liệu công khai, hoặc doanh nghiệp muốn kiểm soát và lọc truy cập web của nhân viên. Phía cấu hình nằm ở máy người dùng.
Reverse proxy: đại diện cho máy chủ
Reverse proxy nằm ở phía website. Người dùng gõ tên miền, DNS trỏ tới reverse proxy, reverse proxy quyết định chuyển yêu cầu tới máy chủ ứng dụng nào phía sau. Người dùng không cần cấu hình gì, thậm chí không biết có reverse proxy.
Vai trò phổ biến của reverse proxy:
- Cân bằng tải: chia yêu cầu cho nhiều máy chủ ứng dụng, bỏ qua máy đang lỗi.
- Xử lý HTTPS: giữ chứng chỉ TLS tại một chỗ, máy chủ phía sau chỉ cần nói HTTP nội bộ.
- Bộ nhớ đệm và nén: trả nhanh các trang hoặc file tĩnh mà không phải hỏi máy chủ ứng dụng.
- Che máy chủ gốc và lọc lưu lượng: giới hạn tốc độ, chặn yêu cầu xấu trước khi tới ứng dụng.
- Định tuyến theo đường dẫn: ví dụ
/apiđi tới một dịch vụ, phần còn lại đi tới dịch vụ khác.
So sánh forward proxy và reverse proxy
| Forward proxy | Reverse proxy | |
|---|---|---|
| Đứng về phía | Người dùng | Máy chủ website |
| Ai cấu hình | Người dùng, trên trình duyệt hoặc phần mềm | Quản trị viên website |
| Che giấu | IP của người dùng | Máy chủ gốc phía sau |
| Mục đích chính | Đổi IP, tách tài khoản, kiểm soát truy cập ra ngoài | Cân bằng tải, HTTPS, bộ nhớ đệm, bảo vệ |
| Công cụ thường gặp | Dịch vụ proxy, Squid, proxy công ty | nginx, HAProxy, Caddy, CDN |
| Người dùng có biết không | Có, vì tự cài đặt | Thường không |
Ví dụ cấu hình reverse proxy với nginx
Cấu hình tối thiểu dưới đây cho nginx nhận yêu cầu tới tên miền rồi chuyển về ứng dụng chạy ở cổng 3000 trên cùng máy chủ. Các header thêm vào giúp ứng dụng biết tên miền gốc và IP thật của người dùng.
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; } }
Với HAProxy, ý tưởng tương tự: một phần frontend nhận kết nối và một phần backend liệt kê các máy chủ ứng dụng để chia tải. Trong thực tế bạn sẽ thêm HTTPS, giới hạn kích thước yêu cầu và thời gian chờ.
Một yêu cầu có thể đi qua cả hai
Hai loại không loại trừ nhau. Khi bạn dùng forward proxy để mở một website lớn, yêu cầu đi từ máy bạn tới forward proxy, ra Internet, tới reverse proxy hoặc CDN của website, rồi mới vào máy chủ ứng dụng. Reverse proxy của website nhìn thấy IP của forward proxy, và đó là IP mà website ghi nhận.
Header X-Forwarded-For mà reverse proxy thêm vào chỉ dùng nội bộ giữa reverse proxy và ứng dụng. Ở chiều forward, một số proxy cũng thêm header tương tự và làm lộ IP thật; bài proxy ẩn danh là gì giải thích cách kiểm tra.
Ai cần loại nào
- Bạn vận hành website hoặc API: cần reverse proxy, tự dựng bằng nginx, HAProxy hoặc dùng CDN. Bạn không cần mua proxy để làm việc này.
- Bạn cần truy cập web từ IP hoặc quốc gia khác: cần forward proxy, ví dụ proxy Việt Nam hay proxy Mỹ.
- Bạn quản lý nhiều tài khoản hoặc cào dữ liệu: cần forward proxy IP riêng. Xem cào dữ liệu web với proxy.
- Bạn thử nghiệm website của mình từ nhiều quốc gia: dùng forward proxy để xem website hiển thị thế nào với người dùng nước ngoài, trong khi reverse proxy vẫn chạy ở phía máy chủ.
Forward proxy tại VinaProxy
VinaProxy cung cấp forward proxy: IPv4 datacenter riêng ở 7 nước và ISP tĩnh ở Việt Nam và Mỹ, giao thức HTTP/HTTPS, xác thực user và mật khẩu, mỗi IP một khách, không giới hạn băng thông. Chúng tôi không cung cấp dịch vụ reverse proxy hay CDN. Giá hiện tại xem trên bảng giá.
Câu hỏi thường gặp
Nginx là forward proxy hay reverse proxy?
Nginx chủ yếu được dùng làm reverse proxy và máy chủ web. Nó không được thiết kế làm forward proxy đầy đủ cho HTTPS nếu không có module bổ sung.
Reverse proxy có giúp đổi IP khi lướt web không?
Không. Reverse proxy phục vụ website, không đổi IP của người truy cập. Muốn đổi IP khi lướt web, bạn cần forward proxy.
CDN có phải reverse proxy không?
Có. CDN là mạng reverse proxy phân tán, đặt gần người dùng để lưu đệm nội dung và bảo vệ máy chủ gốc.
VPN là forward proxy hay reverse proxy?
VPN gần với forward proxy vì đại diện cho người dùng, nhưng hoạt động ở tầng mạng và mã hoá toàn bộ lưu lượng. Xem proxy và VPN khác nhau thế nào.
Có thể dùng proxy mua về làm reverse proxy cho website không?
Không phù hợp. Proxy mua về là forward proxy để đi ra Internet; reverse proxy cần chạy trên máy chủ bạn kiểm soát và trỏ tên miền vào đó.
Cần forward proxy IP riêng?
IPv4 datacenter 7 nước và ISP tĩnh Việt Nam, Mỹ. HTTP/HTTPS, user và mật khẩu, kích hoạt tự động sau khi thanh toán.
Xem bảng giá