Proxy server, Fordward Proxy và Reverse Proxy hãy xem thầy tôi giải thích

Nội dung bài viết

Proxy server là một khái niệm hot từ những năm gần đây, vì nếu server của bạn có những thông tin nhạy cảm như ngân hàng thì việc thiết lập một máy chủ proxy bên ngoài tường lứa là điều cần thiết nhất. Bởi vì khi một ai đó muốn truy cập vào Server này thì nhiệm vụ của nó phải qua mặt proxy server. 

Lâu lâu những lập trình viên không phải chỉ biết code mà cũng phải nên hiểu về tầng Admin, để hiểu hơn hệ thống chạy những kiến trúc nào. Đừng nghĩ nó khô khan, thực chất nó rất hay lắm. Phải có một kiến thức uyên thâm, học hỏi thì mới có thể triển khai một hạ tầng cho một hệ thống lớn mà tiết kiệm và an toàn trong việc bảo vệ. Thiết nghĩ, chúng ta cũng tập dần những thói tìm hiểu về hệ thống nhiều hơn.


Proxy server


Như đã nói ở trên nếu dữ liệu trong server của bạn có thông tin nhạy cảm phải được giữ an toàn, chẳng hạn như cơ sở dữ liệu số thẻ tín dụng, bạn có thể thiết lập máy chủ proxy bên ngoài tường lửa để hoạt động như một Server. Khi một Client bên ngoài cố gắng truy cập vào Server, nó sẽ được gửi đến máy chủ proxy. 


Cách hoạt động của nó rất đơn giản, ví dụ như là Client đưa ra yêu cầu đối với trang web, yêu cầu đó sẽ được chuyển đến máy chủ proxy thay vì server. Sau đó, máy chủ proxy sẽ gửi yêu cầu của khách hàng đến Server chứa dữ liệu (Máy chủ nội dung) thông qua một đường dẫn cụ thể trong tường lửa. Server chứa dữ liệu sau đó sẽ gửi kết quả trở lại máy chủ proxy thông qua kênh này. 


Máy chủ proxy gửi thông tin truy xuất đến máy khách như thể máy chủ proxy là một Server chứa dữ liệu thực tế. Nếu Server chứa dữ liệu trả về thông báo lỗi, máy chủ proxy sẽ chặn thông báo đó và thay đổi bất kỳ URL nào được liệt kê trong tiêu đề trước khi gửi thông báo đến máy khách. Điều này ngăn các máy khách bên ngoài lấy URL chuyển hướng của Server chứa dữ liệu. 


Proxy được chia ra làm 2 loại chính đó là Forward Proxy và Reverse Proxy. Nhiệm vụ hôm nay của tôi là giúp các bạn hiểu về hai mô hình phổ biến này, một khi học nginx thì bạn sẽ được tìm thấy 2 khái niệm này được nhắc đi nhắc lại nhiều lần. 


Trước khi viết bài giải thích này, tôi có ghé qua một số trang blog để củng cố hơn lời giải thích của tôi, thế nhưng rất tiếc, đó là những phải viết của những dân SEO, chỉ biết viêt chứ không hiểu hết luồng đi. Chính vì thế thay vì giải thích như dân SEO thì tôi sẽ giải thích cho các bạn theo một dân kỹ thuật. Nếu bạn nào là fan của Tips Javascript thì còn nhớ một bài viết về mô hình thuê nhà trọ để giải thích về Token Web Json không? 


Reverse Proxy là gì?


Giả sử khi ta đang config Nginx là một máy chủ proxy và cấu hình Reverse Proxy. Thì ở đây chúng ta có ba đối tượng như sau Client, Proxy Server, Server. Giả sử 3 đối tượng trên tôi viết lại là: 


  • Client chính là A 
  • Proxy Server chính là B 
  • Server chính là C


Cách hoạt động như sau: A (khách hàng) muốn thuê nhà, B (đại lý) thuê nhà cho anh ta. Lúc này, C (máy chủ) mới thực sự là chủ nhà. B (đại lý) là người trung gian cho A (khách hàng) thuê lại căn nhà này. Trong quá trình này, A (khách hàng) không biết ai là chủ nhà của căn nhà này, có thể nghĩ rằng căn nhà này là của B (đại lý). 


Đơn giản vậy thôi, bạn cũng đã hiểu rồi đúng không? Client không cần biết Server là thằng nào, bởi vì đã có proxy lo điều đó trước khi lấy dữ liêụ thì proxy đã biết lấy ở đâu rồi. 


Lợi ích của việc Reverse Proxy này có thể thấy rõ nhất là việc Load balancing, chính xác là vậy, bởi vì Proxy biết server nào đang quá tải, hay đang treo từ đó có thể phục vụ Client tốt hơn. Thứ hai đó là việc bảo vệ servers backend. Nó giúp cho chúng ta có thể ẩn đi địa chỉ và cấu trúc thực của server backend. Và nhiều thứ nữa nhưng hai yếu tố trên là quá tốt.


Fordward Proxy là gì?


Tiếp ví dụ trên thì ta giả sử có cách khác để thuê nhà. Nếu như việc sử dụng Reverse Proxy là quá trình nhờ trung gian thì hãy xem cách hoạt động của Fordward Proxy.

 

A (khách hàng) muốn thuê nhà của C (máy chủ), nhưng A (khách hàng) không thể thuê được trực tiếp qua C (máy chủ). Do đó A nhờ đến B. B (đại lý) biết C (máy chủ) có thể thuê căn nhà này nên bạn đã nhờ B (đại lý) thuê giúp căn nhà này. Trong quá trình này, C (máy chủ) không biết A (khách hàng) và chỉ biết B (đại lý) C (máy chủ) không biết A (khách hàng) thuê nhà, chỉ biết nhà cho B (đại lý) thuê. 


Đó chính là cách làm việc của Fordward Proxy.


Tóm lại


Một kiến trúc rõ ràng trong mô hình back-end sẽ giúp tiết kiệm được bao nhiêu kinh phí và nguồn lực. Là một DEV thì cCode là chưa đủ. Hãy học thêm, thêm nữa...

Có thể bạn đã bị missing