Categories CDN

Proxy ngược là gì? Và tại sao người quản trị web ngày nay cần biết thuật ngữ này

Proxy ngược dùng để làm gì?

Vài lời của người biên tập: trong bài viết này Cloudflare giúp chúng ta hiểu rõ hơn khái niệm proxy ngược, một khái niệm căn bản trong bảo mật & kiểm soát truy cập nói chung, và CDN nói riêng. Thật tốt là cách giải thích của họ rất dễ hiểu.


Proxy ngược (reverse proxy) là một máy chủ đứng đằng trước các máy chủ web và thực hiện nhiệm vụ chuyển tiếp các yêu cầu của máy khách (ví dụ: trình duyệt web của người dùng) đến các máy chủ web đó. 

Các proxy ngược thường được triển khai để giúp tăng cường bảo mật, hiệu suất và độ tin cậy (của phiên duyệt web hoặc ứng dụng mạng bất kỳ). Để hiểu rõ hơn về cách thức hoạt động của proxy ngược và những lợi ích mà nó có thể mang lại, trước tiên chúng ta hãy xem xét định nghĩa máy chủ proxy là gì?


Máy chủ proxy là gì?

Một proxy chuyển tiếp / proxy thuận (forward proxy), thường được gọi ngắn gọn là proxy, hoặc máy chủ proxy, hoặc proxy web, là một máy chủ đặt trước một nhóm máy khách (client machines). Khi các máy tính khách đó thực hiện yêu cầu đến các trang web và dịch vụ trên Internet, máy chủ proxy sẽ chặn các yêu cầu đó và sau đó giao tiếp với máy chủ web theo kiểu thay mặt (ủy quyền / proxy) cho các máy khách đó, giống như một người trung gian (giống kiểu khi bạn mua chung cư, sẽ có một nhân viên của sàn giao dịch làm trung gian thực hiện việc trao đổi thông tin giữa người mua là bạn, và người bán là đơn vị xây dựng chung cư).

Ví dụ: chúng tôi liệt kê 3 máy tính liên quan đến giao tiếp proxy chuyển tiếp điển hình:

  • A: Đây là máy tính gia đình của người dùng;
  • B: Đây là một máy chủ proxy chuyển tiếp;
  • C: Đây là máy chủ gốc của trang web (nơi dữ liệu trang web đang lưu trữ).
proxy chuyển tiếp còn gọi là proxy thuận
Máy chủ proxy thuận

Trong giao tiếp Internet tiêu chuẩn, máy tính A sẽ kết nối trực tiếp với máy chủ C, với máy khách gửi các yêu cầu đến máy chủ gốc và máy chủ gốc phản hồi lại máy khách. 

Khi có proxy chuyển tiếp, thay vì giao tiếp trực tiếp thì A (máy khách) sẽ gửi yêu cầu đến B (proxy), sau đó sẽ chuyển tiếp yêu cầu đến C (máy chủ web gốc). Sau đó C sẽ gửi phản hồi tới B, rồi B mới chuyển tiếp phản hồi lại cho A để giải quyết yêu cầu của máy khách.

Tại sao ai đó lại thêm thành phần trung gian bổ sung này vào hoạt động Internet của họ? Chẳng phải như vậy sẽ phức tạp & mất thời gian hơn hay sao? Có một số lý do mà người ta có thể muốn sử dụng proxy chuyển tiếp:

  • Để tránh các hạn chế duyệt web do các lý do ngoài công nghệ – Một số chính phủ, trường học và các tổ chức khác sử dụng tường lửa (firewall) để cấp cho người dùng của họ quyền truy cập vào phiên bản giới hạn của Internet. Một proxy chuyển tiếp có thể được sử dụng để giải quyết những hạn chế này, vì chúng cho phép người dùng kết nối với proxy thay vì trực tiếp đến các trang web họ đang truy cập.
  • Để chặn quyền truy cập vào một số nội dung nhất định – Ngược lại, proxy cũng có thể được thiết lập để chặn một nhóm người dùng truy cập các trang web nhất định. Ví dụ: mạng trường học có thể được định cấu hình để kết nối với web thông qua proxy cho phép thực hiện các quy tắc lọc nội dung (content filtering rules), từ chối chuyển tiếp phản hồi từ Facebook và các trang mạng xã hội khác chẳng hạn.
  • Để bảo vệ danh tính của người dùng khi trực tuyến – Trong một số trường hợp, người dùng Internet thường xuyên chỉ muốn tăng khả năng ẩn danh của bản thân khi trực tuyến, nhưng cũng có những trường hợp khác, khi mà người dùng Internet sống ở những nơi mà chính phủ có thể gây hậu quả nghiêm trọng cho những người bất đồng chính kiến. Chỉ trích chính phủ trong một diễn đàn web hoặc trên phương tiện truyền thông xã hội có thể dẫn đến tiền phạt hoặc bỏ tù cho những người dùng này. Nếu một trong những nhà bất đồng chính kiến ​​này sử dụng proxy chuyển tiếp để kết nối với trang web nơi họ đăng các bình luận nhạy cảm về mặt chính trị, thì địa chỉ IP được sử dụng để đăng bình luận sẽ khó truy tìm lại người bất đồng chính kiến ​​hơn. Thay vào đó chỉ địa chỉ IP của máy chủ proxy mới được hiển thị.

Proxy ngược khác biệt như thế nào?

Một proxy ngược là một máy chủ đặt trước một hoặc nhiều máy chủ web, chặn các yêu cầu từ máy khách. Điều này khác với proxy chuyển tiếp, nơi proxy đặt trước máy khách. 

Với proxy ngược, khi máy khách gửi yêu cầu đến máy chủ gốc của một trang web, những yêu cầu đó sẽ bị chặn ở biên mạng bởi máy chủ proxy ngược. Sau đó, máy chủ proxy ngược sẽ gửi yêu cầu đến và nhận phản hồi từ máy chủ gốc.

Sự khác biệt giữa proxy thuận và ngược là nhỏ nhưng rất quan trọng. Một cách đơn giản, dễ hiểu hơn để tóm tắt là: một proxy chuyển tiếp (thuận) nằm trước một máy khách và đảm bảo rằng không có máy chủ gốc nào giao tiếp trực tiếp với máy khách cụ thể đó. Mặt khác, proxy ngược nằm trước máy chủ gốc và đảm bảo rằng không có máy khách nào giao tiếp trực tiếp với máy chủ gốc đó.

Một lần nữa, chúng ta hãy minh họa bằng cách đặt tên cho các máy tính liên quan:

  • D: Số lượng máy tính bất kỳ của người dùng;
  • E: Đây là một máy chủ proxy ngược;
  • F: Một hoặc nhiều máy chủ gốc (origin servers).
proxy ngược hay reverse proxy
Proxy ngược

Thông thường, tất cả các yêu cầu từ D sẽ chuyển trực tiếp đến F và F sẽ gửi phản hồi trực tiếp đến D. Với proxy ngược, tất cả các yêu cầu từ D (máy tính cá nhân) sẽ chuyển trực tiếp đến E (proxy ngược) và E sẽ gửi yêu cầu của mình đến và nhận phản hồi từ F (máy chủ gốc). E sau đó sẽ chuyển các câu trả lời thích hợp cho D.

Dưới đây, chúng tôi phác thảo một số lợi ích của proxy ngược:

  • Cân bằng tải (load balancing) – Một trang web phổ biến có hàng triệu người dùng mỗi ngày có thể không thể xử lý tất cả lưu lượng truy cập trang web đến nó bằng một máy chủ gốc duy nhất. Thay vào đó, trang web có thể được phân phối giữa một nhóm các máy chủ khác nhau, tất cả đều xử lý các yêu cầu cho cùng một trang web. Trong trường hợp này, proxy ngược có thể cung cấp giải pháp cân bằng tải để phân phối đồng đều lưu lượng đến giữa các máy chủ khác nhau nhằm ngăn bất kỳ máy chủ đơn lẻ nào bị quá tải. Trong trường hợp một máy chủ bị lỗi hoàn toàn, các máy chủ khác có thể xử lý lưu lượng. PS: khả năng này không chỉ giúp máy chủ web gốc có khả năng đàn hồi tốt với các lưu lượng truy cập tăng giảm bất thường, mà còn giúp họ tiết kiệm chi phí hơn so với việc phải thuê máy chủ gốc “siêu to khổng lồ” để xử lý lượng truy cập lên đến đỉnh điểm vào một thời điểm nào đó trong ngày;
  • Bảo vệ tránh sập trang khi có các cuộc tấn công – Với proxy ngược, một trang web hoặc dịch vụ không bao giờ cần tiết lộ địa chỉ IP của (các) máy chủ gốc của chúng. Điều này khiến những kẻ tấn công khó thực hiện một cuộc tấn công có chủ đích chống lại họ, chẳng hạn như tấn công DDoS. Thay vào đó, những kẻ tấn công chỉ có thể nhắm mục tiêu vào proxy ngược, chẳng hạn như CDN của Cloudflare- hệ thống vốn có bảo mật chặt chẽ hơn và nhiều tài nguyên hơn rất nhiều (so máy chủ hosting riêng lẻ bất kỳ) để chống lại một cuộc tấn công mạng như vậy;
  • Cân bằng tải trên máy chủ toàn cầu (GSLB) – Trong hình thức cân bằng tải này, một trang web có thể được phân phối trên một số máy chủ trên toàn cầu và proxy ngược sẽ gửi máy khách đến máy chủ gần nhất về mặt địa lý với họ. Điều này làm giảm khoảng cách mà các yêu cầu và phản hồi cần phải di chuyển, giúp giảm thiểu thời gian tải trang.
  • Bộ nhớ đệm (caching) – Một proxy ngược cũng có thể lưu nội dung vào bộ nhớ cache, giúp hiệu suất nhanh hơn. Ví dụ: nếu người dùng ở Paris truy cập trang web được hỗ trợ proxy ngược với máy chủ web ở Los Angeles, người dùng có thể thực sự kết nối với máy chủ proxy ngược cục bộ ở Paris, sau đó mới phải giao tiếp với máy chủ gốc ở LA. Máy chủ proxy sau đó có thể lưu vào bộ nhớ cache (hoặc tạm thời lưu) dữ liệu phản hồi. Những người dùng Paris tiếp theo duyệt trang web sau này sẽ nhận được phiên bản được lưu trong bộ nhớ cache cục bộ từ máy chủ proxy ngược ở Paris, do vậy hiệu suất nhanh hơn nhiều.
  • Mã hóa SSL – Mã hóa và giải mã thông tin liên lạc SSL (hoặc TLS) cho từng máy khách có thể tốn kém về mặt tính toán đối với máy chủ gốc. Một proxy ngược có thể được cấu hình để giải mã tất cả các yêu cầu đến và mã hóa tất cả các phản hồi gửi đi, giúp giải phóng các tài nguyên có giá trị trên máy chủ gốc.

Cách triển khai proxy ngược

Một số công ty xây dựng proxy ngược của riêng họ, tuy nhiên điều này đòi hỏi nguồn lực kỹ thuật phần cứng và cả phần mềm chuyên sâu, cũng như đầu tư đáng kể tiền của vào phần cứng vật lý. 

Một trong những cách dễ hơn cũng như tiết kiệm chi phí nhất để tận dụng tất cả các lợi ích của proxy ngược là đăng ký dịch vụ CDN. Ví dụ: Cloudflare CDN cung cấp tất cả các tính năng hiệu suất và bảo mật được liệt kê ở trên, cũng như nhiều tính năng khác.

(Dịch từ bài viết What Is A Reverse Proxy? Proxy Servers Explained của Cloudflare)

Back to Top