Sự khác biệt giữa máy chủ proxy và máy chủ proxy ngược là gì?
Sự khác biệt giữa máy chủ proxy và máy chủ proxy ngược là gì?
Câu trả lời:
Các câu trả lời trước đó là chính xác, nhưng có lẽ quá ngắn gọn. Tôi sẽ cố gắng thêm một số ví dụ.
Trước hết, từ "proxy" mô tả ai đó hoặc một cái gì đó hành động thay mặt cho người khác.
Trong lĩnh vực máy tính, chúng ta đang nói về một máy chủ hoạt động thay mặt cho một máy tính khác.
Với mục đích truy cập, tôi sẽ giới hạn thảo luận của mình đối với các proxy web - tuy nhiên, ý tưởng về proxy không giới hạn ở các trang web.
Hầu hết các cuộc thảo luận về proxy web đều đề cập đến loại proxy được gọi là "proxy chuyển tiếp".
Trong trường hợp này, sự kiện proxy là "proxy chuyển tiếp" lấy dữ liệu từ một trang web khác thay cho người yêu cầu ban đầu.
Ví dụ, tôi sẽ liệt kê ba máy tính được kết nối với internet.
Thông thường, người ta sẽ kết nối trực tiếp từ X --> Z.
Tuy nhiên, trong một số trường hợp, tốt hơn là Y --> Z
thay mặt X
, chuỗi nào như sau : X --> Y --> Z
.
Dưới đây là danh sách một phần (rất) sử dụng của máy chủ proxy chuyển tiếp:
1) X không thể truy cập Z trực tiếp vì
a) Một người có thẩm quyền quản trị về X
kết nối internet đã quyết định chặn tất cả quyền truy cập vào trang web Z
.
Ví dụ:
Virus Storm Worm đang lây lan bằng cách lừa mọi người truy cập familypostcards2008.com
, vì vậy, quản trị viên hệ thống đã chặn quyền truy cập vào trang web để ngăn người dùng vô tình tự lây nhiễm.
Nhân viên tại một công ty lớn đã lãng phí quá nhiều thời gian facebook.com
, vì vậy ban quản lý muốn truy cập bị chặn trong giờ làm việc.
Một trường tiểu học địa phương không cho phép truy cập internet vào playboy.com
trang web.
Một chính phủ không thể kiểm soát việc xuất bản tin tức, vì vậy nó kiểm soát quyền truy cập vào tin tức thay vào đó, bằng cách chặn các trang web như wikipedia.org
. Xem ĐKTC hoặc FreeNet .
b) Quản trị viên Z
đã chặn X
.
Ví dụ:
Quản trị viên của Z đã nhận thấy các nỗ lực hack đến từ X, vì vậy quản trị viên đã quyết định chặn địa chỉ IP của X (và / hoặc netrange).
Z là một trang web diễn đàn. X
đang spam diễn đàn. Khối Z.
Trong ví dụ này, tôi sẽ liệt kê ba máy tính được kết nối với internet.
Thông thường, người ta sẽ kết nối trực tiếp từ X --> Z.
Tuy nhiên, trong một số trường hợp, tốt hơn hết là người quản trị Z
nên hạn chế hoặc không cho phép truy cập trực tiếp và buộc khách truy cập phải đi qua Y trước. Vì vậy, như trước đây, chúng tôi có dữ liệu được truy xuất Y --> Z
thay mặt X
, chuỗi nào như sau : X --> Y --> Z
.
Điều khác biệt lần này so với "proxy chuyển tiếp" là lần này người dùng X
không biết anh ta đang truy cập Z
, vì người dùng X
chỉ thấy anh ta đang liên lạc Y
. Máy chủ Z
là vô hình cho khách hàng và chỉ có proxy ngược Y
được hiển thị bên ngoài. Một proxy ngược không yêu cầu cấu hình (proxy) ở phía máy khách.
Khách hàng X
nghĩ rằng anh ta chỉ giao tiếp với Y
( X --> Y
), nhưng thực tế là Y
chuyển tiếp tất cả giao tiếp ( X --> Y --> Z
một lần nữa).
Trong các kịch bản trên, Z
có khả năng lựa chọn Y
.
(X --> Y) --> Z
, ngược lại : X --> (Y --> Z)
.
Một cặp định nghĩa đơn giản sẽ là:
Proxy chuyển tiếp: Hoạt động thay mặt cho người yêu cầu (hoặc người tiêu dùng dịch vụ)
Reverse Proxy: Hoạt động thay mặt cho nhà sản xuất dịch vụ / nội dung.
Tôi tìm thấy sơ đồ dưới đây rất hữu ích. Nó chỉ hiển thị kiến trúc của một thiết lập proxy chuyển tiếp so với đảo ngược từ máy khách đến máy chủ qua Internet. Hình ảnh này sẽ giúp bạn hiểu câu trả lời của qyb2zm302 và các câu trả lời khác tốt hơn.
Bạn cũng có thể xem video này từ F5 's DevCentral Peter Silva.
Nguồn ảnh: Quora . Tuy nhiên, theo Martijn Pieters , hình ảnh này có thể là từ xung an toàn cộng đồng hoặc Julien Pauli của trang web (bằng tiếng Pháp) tại developpez.com.
Nó làm tôi nhớ đến câu tục ngữ cổ điển:
Một bức tranh có giá trị 1000 từ.
Proxy chuyển tiếp so với Proxy ngược (2012) giải thích rất rõ sự khác biệt giữa proxy chuyển tiếp và proxy ngược.
Câu trả lời của qyb2zm302 chi tiết độc đáo về các ứng dụng của proxy, nhưng nó trượt theo khái niệm cơ bản giữa các proxy thuận và ngược. Đối với proxy ngược, X → Y → Z, X biết về Y chứ không phải Z, thay vì ngược lại.
Một proxy chỉ đơn giản là một người trung gian để liên lạc (yêu cầu + phản hồi). Máy khách <-> Proxy <-> Máy chủ
Các proxy hành động thay mặt cho khách hàng. Khách hàng biết về cả ba máy tham gia vào chuỗi. Các máy chủ không.
Các proxy hoạt động thay mặt cho máy chủ. Khách hàng chỉ biết về proxy. Các máy chủ biết toàn bộ chuỗi.
Dường như đối với tôi, chuyển tiếp và đảo ngược chỉ đơn giản là những tên phụ thuộc phối cảnh, khó hiểu cho proxy máy khách và máy chủ . Tôi đề nghị từ bỏ cái trước cho cái sau, để giao tiếp rõ ràng.
Tất nhiên, để làm phức tạp thêm vấn đề, không phải mọi máy đều chỉ là máy khách hoặc máy chủ. Nếu có sự không rõ ràng trong ngữ cảnh, tốt nhất bạn nên xác định rõ ràng vị trí của proxy và thông tin liên lạc mà nó tạo ra.
Một số sơ đồ có thể giúp:
Chuyển tiếp proxy
Đảo ngược proxy
Sự khác biệt chủ yếu là trong việc triển khai. Web chuyển tiếp và proxy ngược đều có các tính năng cơ bản giống nhau. Họ chấp nhận các yêu cầu cho các yêu cầu HTTP ở các định dạng khác nhau và cung cấp phản hồi, thường là bằng cách truy cập nguồn gốc hoặc máy chủ liên hệ.
Các máy chủ đầy đủ tính năng thường có kiểm soát truy cập, bộ nhớ đệm và một số tính năng ánh xạ liên kết.
Proxy chuyển tiếp là proxy được truy cập bằng cách định cấu hình máy khách. Máy khách cần hỗ trợ giao thức cho các tính năng proxy (chuyển hướng, xác thực proxy, v.v.). Proxy là minh bạch cho trải nghiệm người dùng, nhưng không phải cho ứng dụng.
Proxy ngược là một proxy được triển khai như một máy chủ web và hoạt động như một máy chủ web, ngoại trừ thay vì cục bộ nội dung từ các chương trình và đĩa, nó chuyển tiếp yêu cầu đến máy chủ gốc. Từ góc độ máy khách, nó là một máy chủ web, vì vậy trải nghiệm người dùng hoàn toàn minh bạch.
Trong thực tế, một cá thể proxy duy nhất có thể chạy như một proxy chuyển tiếp và đảo ngược cùng một lúc cho các quần thể khách khác nhau.
Proxy: Nó đang thực hiện yêu cầu thay mặt khách hàng . Vì vậy, máy chủ sẽ trả về phản hồi cho proxy và proxy sẽ chuyển tiếp phản hồi cho máy khách. Trên thực tế, máy chủ sẽ không bao giờ "tìm hiểu" khách hàng là ai (địa chỉ IP của khách hàng); Nó sẽ chỉ biết proxy. Tuy nhiên, máy khách chắc chắn biết máy chủ, vì về cơ bản nó định dạng yêu cầu HTTP dành cho máy chủ, nhưng nó chỉ trao nó cho proxy.
Reverse Proxy: Nó đang nhận được yêu cầu thay mặt cho máy chủ . Nó chuyển tiếp yêu cầu đến máy chủ, nhận phản hồi và sau đó trả về phản hồi cho máy khách. Trong trường hợp này, khách hàng sẽ không bao giờ "tìm hiểu" ai là máy chủ thực sự (địa chỉ IP của máy chủ) (với một số ngoại lệ); Nó sẽ chỉ biết proxy. Máy chủ sẽ hoặc không biết máy khách thực tế, tùy thuộc vào cấu hình của proxy ngược.
Giải thích tốt nhất là ở đây với sơ đồ:
Trong khi proxy proxy chuyển tiếp thay mặt cho khách hàng ( hoặc yêu cầu máy chủ ) , proxy proxy ngược lại thay mặt máy chủ.
Trong thực tế, trong khi một proxy chuyển tiếp che giấu danh tính của các máy khách, một proxy ngược lại che giấu danh tính của các máy chủ.
Một proxy máy chủ proxy (và tùy chọn lưu trữ) yêu cầu mạng gửi đến các tài nguyên công cộng không liên quan nhất thiết trên Internet. Một proxy ngược nắm bắt (và tùy chọn lưu trữ) các yêu cầu đến từ Internet và phân phối chúng cho các tài nguyên riêng tư nội bộ khác nhau, thường cho mục đích sẵn sàng cao.
Cloudflare có một bài viết tuyệt vời với hình ảnh giải thích điều này một cách chi tiết.
Kiểm tra ở đây: Proxy ngược là gì? | Giải thích về máy chủ proxy
Proxy (Proxy chuyển tiếp):
Khi các máy tính trong mạng LAN của bạn kết nối với máy chủ proxy truy cập Internet. Lợi ích chỉ bao gồm máy chủ được tiếp xúc với Internet. Những người ở bên ngoài không thể truy cập trực tiếp vào máy tính. Proxy chuyển tiếp có thể cải thiện truy cập Internet cho người dùng bằng cách tải xuống bộ đệm. Chúng cũng có thể được sử dụng để hạn chế quyền truy cập vào một số trang web. Ngoài ra, chỉ có máy chủ proxy mới cần một địa chỉ công cộng, không phải máy khách kết nối với nó.
Proxy ngược:
Một proxy ngược là ngược lại với một proxy chuyển tiếp. Thay vào đó, nó hoạt động như một proxy thay mặt cho các máy chủ được kết nối. Thay vì truy cập trực tiếp vào một máy chủ từ xa, người dùng sẽ truy cập proxy ngược và được chuyển hướng đến máy chủ phù hợp từ đó. Chỉ proxy ngược mới cần chứng chỉ SSL, chỉ cần một địa chỉ IP công cộng và nó có thể xử lý cân bằng tải của các yêu cầu đến để nâng cao trải nghiệm người dùng nói chung.
Nguồn hình ảnh: Tạo Proxy chuyển tiếp bằng cách sử dụng định tuyến yêu cầu ứng dụng
Sự hiểu biết của tôi từ quan điểm của Apache là proxy có nghĩa là nếu trang web x proxy cho trang web y, thì yêu cầu x trả về y.
Proxy ngược có nghĩa là phản hồi từ y được điều chỉnh sao cho tất cả các tham chiếu đến y trở thành x.
Vì vậy, người dùng không thể nói rằng proxy có liên quan ...
Theo sự hiểu biết của tôi...
Để bắt đầu, như mọi người đều biết, proxy có nghĩa là "quyền đại diện cho người khác". Bây giờ có hai điều, proxy chuyển tiếp và ngược lại.
Giả sử bạn muốn truy cập lần lượt "Google" và "Google" sẽ có n số máy chủ để đáp ứng yêu cầu cụ thể đó.
Bây giờ trong trường hợp này, trong khi bạn đang yêu cầu một cái gì đó từ Google và bạn không muốn Google thấy địa chỉ IP của mình, thì bạn sẽ sử dụng proxy chuyển tiếp, như được giải thích bên dưới.
A → B → C
Bây giờ bạn ở đây là A, gửi yêu cầu qua B. Vì vậy, C sẽ nghĩ rằng yêu cầu đến từ B, không phải A. Bằng cách này, bạn có thể ngăn địa chỉ IP của khách hàng không bị lộ ra thế giới bên ngoài.
Bây giờ trong trường hợp này, để làm cho bạn hiểu, chúng tôi sẽ đưa ra trường hợp tương tự của proxy chuyển tiếp. Tại đây, bạn đã yêu cầu một cái gì đó cho Google, từ đó sẽ gửi một yêu cầu đến máy chủ ứng dụng hoặc máy chủ proxy khác để nhận được phản hồi. Vì vậy, những điều này sẽ xảy ra như được giải thích dưới đây.
A → B → C
C → D
C ← D
A ← B ← C
Từ sơ đồ trên, bạn có thể thấy rằng một yêu cầu đã được gửi đến C từ B, không phải từ A. Sau đó, từ C sẽ có một yêu cầu gửi đến D. Tương tự, phản hồi sẽ chuyển đến C từ D và sau đó đến B và A.
Biểu đồ trên cho biết đó chỉ là bối cảnh quan trọng mặc dù cả hai proxy đều hoạt động theo cùng một cách, nhưng proxy phía máy khách đang ẩn thông tin máy khách trong khi proxy phía máy chủ sẽ ẩn thông tin phía máy chủ.
Proxy chuyển tiếp cấp cho khách hàng ẩn danh (nghĩa là nghĩ Tor ).
Proxy ngược cấp cho ẩn danh máy chủ cuối (nghĩa là nghĩ rằng máy chủ đằng sau DMZ).
Đây là một ví dụ về proxy ngược (dưới dạng cân bằng tải).
Một khách hàng lướt đến website.com và máy chủ mà nó truy cập có proxy ngược chạy trên nó. Các proxy ngược xảy ra là Pound . Pound nhận yêu cầu và gửi nó đến một trong ba máy chủ ứng dụng ngồi đằng sau nó. Trong ví dụ này, Pound là một bộ cân bằng tải. Đó là, nó đang cân bằng tải giữa ba máy chủ ứng dụng.
Các máy chủ ứng dụng phục vụ nội dung trang web trở lại máy khách.
Nếu không có proxy
Để xem từ phía máy khách và phía máy chủ giống nhau:
Máy khách -> Máy chủ
Ủy quyền
Từ phía khách hàng:
Máy khách -> proxy -> Máy chủ
Từ phía máy chủ:
Máy khách -> Máy chủ
Đảo ngược proxy
Từ phía khách hàng:
Máy khách -> Máy chủ
Từ phía máy chủ:
Máy khách -> proxy -> Máy chủ
Vì vậy, tôi nghĩ rằng nếu nó được thiết lập bởi người dùng máy khách, nó được gọi là proxy nếu nó được thiết lập bởi người quản lý máy chủ thì đó là proxy ngược.
Bởi vì mục đích và lý do để thiết lập nó là khác nhau, họ xử lý dữ liệu theo những cách khác nhau và sử dụng phần mềm khác nhau.
User side | Server side
client <-> proxy <--> reverse_proxy <-> real server
Nhìn từ góc độ của người dùng: khi gửi yêu cầu đến proxy hoặc máy chủ proxy ngược :
proxy - yêu cầu hai đối số :
1) những gì cần nhận và 2) máy chủ proxy nào sẽ sử dụng một trung gian
proxy ngược - yêu cầu một đối số :
1) những gì cần nhận
Một proxy ngược lấy nội dung từ một máy chủ khác mà người dùng không biết đến và trả về kết quả như thể nó bắt nguồn từ máy chủ proxy ngược .
Hầu hết các câu trả lời trước đều tốt, nhưng theo tôi, không có câu trả lời nào đủ gần để giải quyết đủ chất lượng "ngược" để phân biệt hai câu này. Để làm điều đó, một số cách hình dung bản chất "đảo ngược" của những gì về cơ bản là cùng một thứ (một proxy) cần phải được đưa ra, và nó cần phải được đưa ra một cách trừu tượng.
Một proxy (ngầm định là "proxy chuyển tiếp") kết nối nhiều máy khách cục bộ với bất kỳ một máy chủ từ xa nào:
c--
|--p--s
c--
Một proxy ngược kết nối nhiều máy chủ cục bộ với bất kỳ một máy khách từ xa nào (chú ý cách bố trí đảo ngược):
s--
|--p--c
s--
Đó là một vấn đề về quan điểm thực sự và hiểu đúng về khái niệm này đòi hỏi phải trừu tượng hóa các chi tiết không cần thiết (đối với khái niệm cụ thể) mặc dù chúng có thể rất quan trọng khi nói đến tính thực dụng của hoạt động proxy. Các chi tiết như vậy bao gồm thực tế là trong cả hai kịch bản, thực tế là nhiều máy khách kết nối với nhiều máy chủ, máy khách và máy chủ đó có thể không thực sự cục bộ hoặc từ xa, nơi đặt đám mây Internet hoặc loại khả năng hiển thị giữa máy khách và máy chủ.