พร็อกซีเซิร์ฟเวอร์และพร็อกซีเซิร์ฟเวอร์ย้อนกลับต่างกันอย่างไร


1773

พร็อกซีเซิร์ฟเวอร์และพร็อกซีเซิร์ฟเวอร์ย้อนกลับต่างกันอย่างไร


51
มันอธิบายได้ดีในApache docsเช่นกัน
เปาโล

3
@Paolo ที่ทำให้มันมากเข้าใจง่ายกว่าบทความวิกิพีเดีย บางทีฉันควรหลีกเลี่ยงการแก้ไขข้อมูลบางส่วนในบทความ Wikipedia ในที่สุด ...
RastaJedi

ให้บอกว่าฉันมีโฮสต์ A ซึ่งจำเป็นต้องเชื่อมต่อกับโฮสต์ C แต่ไม่ได้โดยตรง แต่จะถูกกำหนดค่าเป็นรายการโฮสต์หรืออาจเป็นไปได้ที่จะเรียก B ซึ่งการส่งต่อการร้องขอไปยัง C. C ไม่สนใจหรือทราบเกี่ยวกับ B. นี่คือพร็อกซีการส่งต่อหรือพร็อกซีย้อนกลับหรือไม่
Daniel Leach

หากโฮสต์ A ไม่สามารถไปยังโฮสต์ C ได้โดยไม่ได้รับการกำหนดค่าให้ติดต่อโฮสต์ B อันดับแรกโฮสต์ B นั้นเป็นเซิร์ฟเวอร์ดั้งเดิมไปข้างหน้าหรือ "พร็อกซีเซิร์ฟเวอร์" ขาออก
TaylorMonacelli

5
Forward proxies มอบการไม่เปิดเผยตัวตนของลูกค้า (เช่นคิดว่า Tor) Reverse proxy มอบการไม่เปิดเผยตัวตนของเซิร์ฟเวอร์ปลายทาง (เช่นคิดว่าเซิร์ฟเวอร์ที่อยู่เบื้องหลัง DMZ)
8bitjunkie

คำตอบ:


2969

คำตอบก่อนหน้านี้ถูกต้อง แต่อาจสั้นเกินไป ฉันจะพยายามเพิ่มตัวอย่าง

ก่อนอื่นคำว่า "พร็อกซี" อธิบายถึงบุคคลหรือสิ่งที่กระทำในนามของบุคคลอื่น

ในขอบเขตของคอมพิวเตอร์เรากำลังพูดถึงเซิร์ฟเวอร์หนึ่งตัวที่ทำหน้าที่แทนคอมพิวเตอร์เครื่องอื่น

สำหรับจุดประสงค์ในการเข้าถึงข้อมูลฉันจะ จำกัด การอภิปรายของฉันไว้ในเว็บพร็อกซี - อย่างไรก็ตามความคิดของพร็อกซีไม่ได้ จำกัด อยู่ที่เว็บไซต์

ไปข้างหน้าพร็อกซี

การอภิปรายส่วนใหญ่ของเว็บพร็อกซี่หมายถึงประเภทของพร็อกซี่ที่รู้จักกันในชื่อ

เหตุการณ์พร็อกซีในกรณีนี้คือ "การส่งต่อพร็อกซี" ดึงข้อมูลจากเว็บไซต์อื่นในนามของผู้ร้องขอต้นฉบับ

คอมพิวเตอร์ 3 เครื่อง (ตอนที่ 1)

ตัวอย่างเช่นฉันจะแสดงคอมพิวเตอร์สามเครื่องที่เชื่อมต่อกับอินเทอร์เน็ต

  • X = คอมพิวเตอร์ของคุณหรือคอมพิวเตอร์ "ไคลเอนต์" บนอินเทอร์เน็ต
  • Y = เว็บไซต์พรอกซี, proxy.example.org
  • Z = เว็บไซต์ที่คุณต้องการเข้าชม www.example.net

โดยปกติจะเชื่อมต่อโดยตรงจาก X --> Z.

อย่างไรก็ตามในบางสถานการณ์มันจะดีกว่าสำหรับY --> Zในนามของซึ่งโซ่ดังต่อไปนี้:XX --> Y --> Z

สาเหตุที่ X ต้องการใช้พร็อกซีเซิร์ฟเวอร์ไปข้างหน้า:

นี่คือรายการบางส่วน (มาก) ของการใช้พร็อกซีเซิร์ฟเวอร์ไปข้างหน้า:

  • 1) X ไม่สามารถเข้าถึง Z ได้โดยตรงเนื่องจาก

    • a) ผู้ที่มีอำนาจในการจัดการXการเชื่อมต่ออินเทอร์เน็ตได้ตัดสินใจที่จะบล็อกการเข้าถึงเว็บไซต์Zทั้งหมด

      • ตัวอย่าง:

        • ไวรัส Storm Worm แพร่กระจายโดยหลอกให้ผู้คนเข้าเยี่ยมชมfamilypostcards2008.comดังนั้นผู้ดูแลระบบจึงบล็อกการเข้าถึงเว็บไซต์เพื่อป้องกันไม่ให้ผู้ใช้ติดไวรัสโดยไม่ตั้งใจ

        • พนักงานใน บริษัท ใหญ่เสียเวลามากเกินไปfacebook.comดังนั้นฝ่ายบริหารจึงต้องการบล็อกการเข้าถึงระหว่างเวลาทำการ

        • โรงเรียนประถมศึกษาในท้องถิ่นไม่อนุญาตให้เข้าถึงอินเทอร์เน็ตในplayboy.comเว็บไซต์

        • wikipedia.orgรัฐบาลไม่สามารถควบคุมการเผยแพร่ของข่าวจึงควบคุมการเข้าถึงข่าวแทนโดยเว็บไซต์เช่นการปิดกั้น ดูTORหรือFreenet

    • ข) ผู้ดูแลระบบของได้ปิดกั้นZX

      • ตัวอย่าง:

        • ผู้ดูแลระบบของ Z สังเกตเห็นความพยายามในการแฮ็คที่มาจาก X ดังนั้นผู้ดูแลระบบจึงตัดสินใจปิดกั้นที่อยู่ IP ของ X (และ / หรือ Netrange)

        • Z เป็นเว็บไซต์ฟอรัม Xกำลังส่งสแปมฟอรัม บล็อก Z

REVERSE proxy

คอมพิวเตอร์ 3 เครื่อง (ตอนที่ 2)

สำหรับตัวอย่างนี้ฉันจะแสดงรายการคอมพิวเตอร์สามเครื่องที่เชื่อมต่อกับอินเทอร์เน็ต

  • X = คอมพิวเตอร์ของคุณหรือคอมพิวเตอร์ "ไคลเอนต์" บนอินเทอร์เน็ต
  • Y = เว็บไซต์พร็อกซีย้อนกลับ proxy.example.com
  • Z = เว็บไซต์ที่คุณต้องการเข้าชม www.example.net

โดยปกติจะเชื่อมต่อโดยตรงจาก X --> Z.

อย่างไรก็ตามในบางสถานการณ์จะเป็นการดีกว่าสำหรับผู้ดูแลระบบในZการ จำกัด หรือไม่อนุญาตการเข้าถึงโดยตรงและบังคับให้ผู้เยี่ยมชมผ่าน Y ก่อน ดังนั้นเมื่อก่อนเราได้ข้อมูลที่ถูกดึงโดยY --> Zในนามของซึ่งโซ่ดังต่อไปนี้:XX --> Y --> Z

สิ่งที่แตกต่างในเวลานี้เมื่อเปรียบเทียบกับ "พร็อกซีการส่งต่อ" คือเวลานี้ผู้ใช้Xไม่ทราบว่าเขากำลังเข้าถึงZเนื่องจากผู้ใช้Xเห็นว่าเขากำลังสื่อสารอยู่Yเท่านั้น เซิร์ฟเวอร์Zไม่สามารถมองเห็นลูกค้าได้และมีเพียง reverse proxy เท่านั้นที่Yสามารถมองเห็นได้จากภายนอก reverse proxy ต้องการการกำหนดค่า (proxy) ที่ฝั่งไคลเอ็นต์

ลูกค้าXคิดว่าเขาเพียงแค่สื่อสารกับY( X --> Y) แต่ความจริงคือYการส่งต่อการสื่อสารทั้งหมด ( X --> Y --> Zอีกครั้ง)

สาเหตุที่ Z ต้องการตั้งค่าพร็อกซีเซิร์ฟเวอร์ย้อนกลับ:

  • 1) Z ต้องการบังคับให้ทราฟฟิกทั้งหมดไปยังเว็บไซต์ของตนเพื่อผ่าน Y ก่อน
    • ก) Z มีเว็บไซต์ขนาดใหญ่ที่ผู้คนนับล้านต้องการเห็น แต่เว็บเซิร์ฟเวอร์เดียวไม่สามารถรองรับปริมาณการใช้งานทั้งหมด ดังนั้น Z จึงตั้งเซิร์ฟเวอร์จำนวนมากและวางพร็อกซีย้อนกลับบนอินเทอร์เน็ตที่จะส่งผู้ใช้ไปยังเซิร์ฟเวอร์ที่ใกล้เคียงที่สุดเมื่อพวกเขาพยายามเยี่ยมชม Z นี่เป็นส่วนหนึ่งของแนวคิดการทำงานของเครือข่ายการกระจายเนื้อหา (CDN)
  • 2) ผู้ดูแลระบบของ Z กังวลเกี่ยวกับการตอบโต้เนื้อหาที่โฮสต์บนเซิร์ฟเวอร์และไม่ต้องการเปิดเผยเซิร์ฟเวอร์หลักต่อสาธารณะโดยตรง
    • ก) เจ้าของแบรนด์สแปมเช่น "ร้านขายยาของแคนาดา" มีเซิร์ฟเวอร์นับพัน แต่ในความเป็นจริงมีเว็บไซต์ส่วนใหญ่ที่โฮสต์บนเซิร์ฟเวอร์น้อยกว่ามาก นอกจากนี้การร้องเรียนเรื่องการละเมิดเกี่ยวกับสแปมจะปิดเซิร์ฟเวอร์สาธารณะเท่านั้นไม่ใช่เซิร์ฟเวอร์หลัก

ในสถานการณ์ดังกล่าวข้างต้นมีความสามารถในการเลือกZY

ลิงก์ไปยังหัวข้อจากโพสต์:

เครือข่ายการจัดส่งเนื้อหา

ส่งต่อซอฟต์แวร์พร็อกซี (ฝั่งเซิร์ฟเวอร์)

ซอฟต์แวร์ reverse proxy สำหรับ HTTP (ฝั่งเซิร์ฟเวอร์)

ซอฟต์แวร์ reverse proxy สำหรับ TCP (ฝั่งเซิร์ฟเวอร์)

ดูสิ่งนี้ด้วย:


1
TAM (ผู้จัดการการเข้าถึง tivoli) เป็นพร็อกซีเซิร์ฟเวอร์ย้อนกลับใช่ไหม
Clark Bao

2
ตามหลักการแล้วเราสามารถอ้างถึงหรือคิดว่า "reverse proxy" จากนั้นเป็น proxy "บังคับ"?
โทมัส

3
"ที่จะส่งผู้ใช้ไปยังเซิร์ฟเวอร์ที่อยู่ใกล้พวกเขามากที่สุด" - ประเด็นคืออะไร? ปริมาณข้อมูลทั้งหมดจะผ่านพร็อกซีเซิร์ฟเวอร์นั้นใช่ไหม ดังนั้นไม่สำคัญว่าตำแหน่งของเซิร์ฟเวอร์ 'ท้องถิ่น' ที่อยู่ด้านหลัง หรือฉันหายไปบางอย่าง
Pavel

2
@Pavel อาจเป็น "เซิร์ฟเวอร์ที่ใกล้เคียงที่สุด" ไม่ใช่คำอธิบายที่ดีที่สุด เช่น "กระจายโหลดไปยังกลุ่มของเซิร์ฟเวอร์" เป็นคำอธิบายที่ดีกว่า ตัวอย่างนี้อธิบายถึงตัวโหลดบาลานซ์พร็อกซีย้อนกลับ
JDS

6
นี่คือกุญแจสำคัญสำหรับฉัน: - ไปข้างหน้า: ย้อนกลับ:(X --> Y) --> Z X --> (Y --> Z)
Druckles

538

คู่ของคำจำกัดความง่าย ๆ คือ:

ส่งต่อพร็อกซี: ทำหน้าที่ในนามของผู้ร้องขอ (หรือผู้บริโภคบริการ)

Reverse Proxy: ทำหน้าที่ในนามของผู้ให้บริการ / ผู้ผลิตเนื้อหา


413

ฉันพบว่าแผนภาพด้านล่างมีประโยชน์มาก เพียงแสดงสถาปัตยกรรมของการตั้งค่าพร็อกซีไปข้างหน้าและย้อนกลับจากไคลเอนต์ไปยังเซิร์ฟเวอร์ผ่านทางอินเทอร์เน็ต ภาพนี้จะช่วยให้คุณเข้าใจคำตอบของ qyb2zm302และคำตอบอื่น ๆ ได้ดีขึ้น

Forward Proxy vs Reverse Proxy

คุณสามารถดูวิดีโอนี้จากDevCentralของF5โดย Peter Silva

แหล่งที่มาของภาพ: Quora อย่างไรก็ตามตามPieters Martijnภาพนี้อาจมาจากPulse Secure Communityหรือเว็บไซต์ Julien Pauli (ภาษาฝรั่งเศส) ที่ developpez.com

มันทำให้ฉันนึกถึงสุภาษิตคลาสสิค:

รูปภาพมีมูลค่า 1,000 คำ


9
นี่คือทุกสิ่งที่คุณต้องดู การตั้งค่าพร็อกซีในเบราว์เซอร์ของคุณเพื่อให้ Netflix ไม่ทราบว่าคุณอยู่ในประเทศใด บริการอัปสตรีมที่นำคำขอเข้ามา (บางทีคุณต้องการส่งคำขอหนึ่งไปยังเซิร์ฟเวอร์สองเครื่อง) เป็นพร็อกซีย้อนกลับ
Kyle Chadha

5
การส่งต่อพร็อกซีสามารถอยู่บนอินเทอร์เน็ตได้เช่นกัน
mac

7
ภาพที่ดีที่สุดในคำตอบสุดท้าย ขอบคุณ :) reverse proxy รู้จักกันในชื่อ "Load Balancer" และทำงานบนฝั่งเซิร์ฟเวอร์ (กระจายโหลดไปยังเซิร์ฟเวอร์ต่าง ๆ ) ในขณะที่ forward proxy สนับสนุนฝั่งไคลเอ็นต์
codepleb

1
ผู้เขียน quora ไม่ใช่ผู้แต่งดั้งเดิมของรูปภาพเนื่องจากหน้านี้จากปี 2013 ที่มีการแก้ไขครั้งเดียวมีอายุมากกว่าหนึ่งปี
Martijn Pieters

1
อาจเป็นได้ว่าบทช่วยสอนภาษาฝรั่งเศสปี 2009เป็นแหล่งที่มา เก็บสำเนา 2009 เว็บมีปัญหา JavaScript (การเปลี่ยนเส้นทางอย่างต่อเนื่อง) และภาพที่ถูกเก็บไว้เพียงในปี 2017 แต่การอ้างอิงแหล่งที่มา URL รูปภาพเช่นเดียวกับแหล่งที่มาในภายหลัง
Martijn Pieters

230

Forward Proxy vs. Reverse Proxy (2012) อธิบายความแตกต่างระหว่างการส่งต่อและการย้อนกลับอย่างชัดเจน

คำตอบของ qyb2zm302 มีรายละเอียดการใช้งานของพร็อกซี่อย่างชัดเจน แต่มันลื่นไถลบนแนวคิดพื้นฐานระหว่างไปข้างหน้าและย้อนกลับพร็อกซี่ สำหรับ reverse proxy, X → Y → Z, X รู้เกี่ยวกับ Y และไม่ใช่ Z แทนที่จะเป็นตรงกันข้าม

พร็อกซีเป็นเพียงตัวกลางสำหรับการสื่อสาร (ร้องขอ + การตอบกลับ) ไคลเอนต์ <-> Proxy <-> เซิร์ฟเวอร์

  • ไคลเอนต์พร็อกซี่: (ไคลเอนต์ <-> proxy )เซิร์ฟเวอร์ <->

พร็อกซีทำหน้าที่ในนามของลูกค้า ลูกค้ารู้เกี่ยวกับเครื่องจักรทั้งสามเครื่องที่เกี่ยวข้องในห่วงโซ่ เซิร์ฟเวอร์ไม่ได้

  • พร็อกซีเซิร์ฟเวอร์: ไคลเอนต์ <-> (พร็อกซีเซิร์ฟเวอร์ <-> )

พร็อกซีทำหน้าที่ในนามของเซิร์ฟเวอร์ ไคลเอ็นต์รู้เกี่ยวกับพร็อกซีเท่านั้น เซิร์ฟเวอร์รู้ทั้งห่วงโซ่

สำหรับฉันแล้วการส่งต่อและย้อนกลับเป็นเพียงชื่อที่สับสนขึ้นอยู่กับมุมมองสำหรับไคลเอ็นต์และพร็อกซีเซิร์ฟเวอร์ ฉันขอแนะนำให้ละทิ้งอดีตเพื่อหลังเพื่อการสื่อสารที่ชัดเจน

แน่นอนว่าการทำให้เรื่องซับซ้อนมากขึ้นไม่ใช่ว่าทุกเครื่องจะเป็นไคลเอนต์หรือเซิร์ฟเวอร์ หากมีความกำกวมในบริบททางที่ดีที่สุดคือการระบุอย่างชัดเจนว่าที่พร็อกซีอยู่ที่ใดและการสื่อสารที่ช่องทางนั้น


3
คำตอบนี้สอดคล้องกับhttpd.apache.org/docs/2.0/mod/mod_proxy.html#forwardreverseและช่วยอธิบายอย่างชัดเจน
เกร็กวูดส์

7
ดูเหมือนว่าคุณสมบัติที่เกี่ยวข้องที่สุดในการเปรียบเทียบนี้คือใครรู้ใคร forward proxy: ไคลเอนต์รู้ทั้ง proxy (มันมีการกำหนดค่าในความเป็นจริง) และเซิร์ฟเวอร์เป้าหมาย (ตามที่ร้องขอไปยัง url ของเซิร์ฟเวอร์) ในขณะที่ในกรณีของ reverse proxy ลูกค้าจะรู้ว่า proxy เป็นเซิร์ฟเวอร์เป้าหมาย (มัน ไม่ทราบว่าพร็อกซีกำลังโทรอะไรจริง ๆ มันอาจเป็นเซิร์ฟเวอร์เดียวหรือหลายตัว) ด้วยการส่งต่อพร็อกซีเซิร์ฟเวอร์ไม่ทราบว่าลูกค้าคือใครเพราะพร็อกซี "ส่งต่อ" ร้องขอไป forward proxy: ซ่อนไคลเอนต์ reverse proxy: ซ่อนเซิร์ฟเวอร์
Belun

@Protongun "..A proxy เป็นเพียงคนกลางในการติดต่อสื่อสาร (ร้องขอ + การตอบกลับ) .. " สิ่งที่ต้องการพร็อกซี่ในตอนแรกคืออะไร? กรุณาชี้แจง IMHO คำตอบนี้ควรจะเป็นคำตอบที่ได้รับการยอมรับ
vikramvi

ลิงค์แรกในโพสต์นี้ทำให้ชัดเจนและเข้าใจง่ายสำหรับทุกคน
ตำนาน

@Belun อธิบายได้ดีในคำศัพท์ / คำศัพท์ที่ง่ายที่สุด
Ilangeeran

129

ไดอะแกรมบางอย่างอาจช่วย:

ส่งต่อพร็อกซี

ส่งต่อพร็อกซี

ย้อนกลับพร็อกซี

ย้อนกลับพร็อกซี


8
ใช่ไหม? พวกเขาดูเหมือนกัน! มีอะไรพิเศษเกี่ยวกับการเขียนคำตอบใหม่ที่ทำให้พร็อกซี่เป็น "reverse" proxy?
8bitjunkie

2
@ 8bitjunkie มันเกี่ยวกับมุมมอง โปรดสังเกตว่าสำหรับพร็อกซีการส่งต่อไคลเอ็นต์จะทราบว่ากำลังสื่อสารกับพร็อกซีเซิร์ฟเวอร์ สำหรับ reverse proxy ลูกค้าคิดว่ามันกำลังสื่อสารโดยตรงกับ home.com พร็อกซียังมีการใช้งานที่แตกต่างกัน พร็อกซีย้อนกลับสามารถโง่สวย สิ่งที่ต้องทำคือเปลี่ยนที่อยู่และส่งต่อสาย ตรรกะเครือข่ายเพิ่มเติมบนไคลเอนต์น้อยกว่าบนพร็อกซี ในทางกลับกันพร็อกซีจำเป็นต้องรู้ว่าการร้องขอ proxy.com () นั้นจำเป็นต้องมีการโทรศัพท์ไปที่ service.com ตรรกะเครือข่ายน้อยลงในไคลเอนต์มากขึ้นในพร็อกซี่
Kevin

1
" แปล myhome.myhosting.com เป็น hom.com" คืออะไรฉันไม่ได้รับส่วนแปล ชอบเขียนส่วนหนึ่งของส่วนหัวการตอบกลับหรืออะไรอีกไหม
1252748

อีกเหตุผลหนึ่งที่ทำให้ reverse proxy (จากสิ่งที่ฉันเข้าใจจากคำตอบที่ยอมรับได้) ก็คือจุดประสงค์ของการทำเช่นนี้คือการแบ่งทราฟฟิกที่เข้ามาอย่างมากในเซิร์ฟเวอร์หลายเครื่อง เกิดอะไรขึ้นในสายโซ่นี้ นั่นเป็นอีก "กฎขาเข้า" หรือไม่
1252748

@ 1252748 ประมาณ 1) การแปลจะหมายถึงการจับคู่ URL และออกคำขอไปยัง URL ที่เหมาะสม ประมาณ 2) ใช่คุณสามารถกำหนดค่าเซิร์ฟเวอร์ตัวอย่างเช่นใช้ round robin เพื่อโหลดบาลานซ์คำขอระหว่างเซิร์ฟเวอร์
Maria Ines Parnisari

72

ความแตกต่างส่วนใหญ่ในการปรับใช้ ไปข้างหน้าและย้อนกลับผู้รับมอบฉันทะทุกคนมีคุณสมบัติพื้นฐานที่เหมือนกัน พวกเขายอมรับคำขอสำหรับคำขอ HTTP ในรูปแบบต่าง ๆ และให้การตอบสนองโดยปกติแล้วจะเข้าถึงเซิร์ฟเวอร์ต้นทางหรือเซิร์ฟเวอร์ผู้ติดต่อ

เซิร์ฟเวอร์ที่มีคุณลักษณะครบถ้วนมักจะมีการควบคุมการเข้าถึงการแคชและคุณลักษณะการแมปลิงค์บางอย่าง

พร็อกซีการส่งต่อคือพร็อกซีที่เข้าถึงได้โดยการกำหนดค่าเครื่องไคลเอนต์ ลูกค้าต้องการการสนับสนุนโปรโตคอลสำหรับคุณสมบัติพร็อกซี่ (การเปลี่ยนเส้นทางการตรวจสอบความถูกต้องของพร็อกซี ฯลฯ ) พร็อกซีมีความโปร่งใสต่อประสบการณ์การใช้งานของผู้ใช้

พร็อกซีย้อนกลับคือพร็อกซีที่ปรับใช้เป็นเว็บเซิร์ฟเวอร์และทำงานเหมือนเว็บเซิร์ฟเวอร์ยกเว้นว่าจะเขียนเนื้อหาจากโปรแกรมและดิสก์ในเครื่องมันจะส่งต่อคำขอไปยังเซิร์ฟเวอร์ต้นทาง จากมุมมองของลูกค้ามันเป็นเว็บเซิร์ฟเวอร์ดังนั้นประสบการณ์ของผู้ใช้จึงโปร่งใสอย่างสมบูรณ์

ในความเป็นจริงอินสแตนซ์ของพร็อกซีเดียวสามารถเรียกใช้เป็นพร็อกซีไปข้างหน้าและย้อนกลับในเวลาเดียวกันสำหรับลูกค้าที่แตกต่างกัน


เพียงเพื่อให้แน่ใจว่าพร็อกซีส่งต่อเป็นฝั่งไคลเอ็นต์และพร็อกซีย้อนกลับเป็นฝั่งเซิร์ฟเวอร์หรือไม่
Yves

4
@yves พรอกซียังเป็นเซิร์ฟเวอร์ มันเป็นเพียงแค่ไคลเอนต์ที่ต้องการการกำหนดค่าท้องถิ่นเพื่อให้พวกเขาสามารถสื่อสาร ในขณะที่ reverse proxy ต้องการการกำหนดค่าที่เซิร์ฟเวอร์เอง ฟิสิคัลโหนดของพวกเขาทั้งสองอยู่ที่ 'ฝั่งเซิร์ฟเวอร์'
Adib Aroui

เพียงแค่ให้ข้อมูลทั่วไปไม่ทั้งหมดผู้รับมอบฉันทะสามารถทำงานเป็นไปข้างหน้าและย้อนกลับเช่นถุงเท้าสามารถ แต่ไม่ HTTP ผู้รับมอบฉันทะ
RastaJedi

60

พร็อกซี: มันคือการทำให้การร้องขอในนามของลูกค้า ดังนั้นเซิร์ฟเวอร์จะตอบกลับไปยังพร็อกซีและพร็อกซีจะส่งต่อการตอบกลับไปยังลูกค้า ในความเป็นจริงเซิร์ฟเวอร์จะไม่ "เรียนรู้" ว่าใครเป็นลูกค้า (ที่อยู่ IP ของลูกค้า); มันจะได้รู้ว่าพร็อกซี่ อย่างไรก็ตามไคลเอนต์รู้เซิร์ฟเวอร์เป็นอย่างดีเนื่องจากเป็นรูปแบบคำขอ HTTP ที่กำหนดไว้สำหรับเซิร์ฟเวอร์เป็นหลัก แต่มันก็มอบให้พร็อกซี

ป้อนคำอธิบายภาพที่นี่

ย้อนกลับพร็อกซี: มันได้รับการร้องขอในนามของเซิร์ฟเวอร์ มันส่งต่อการร้องขอไปยังเซิร์ฟเวอร์ได้รับการตอบสนองแล้วส่งกลับการตอบสนองไปยังลูกค้า ในกรณีนี้ลูกค้าจะไม่ "เรียนรู้" ซึ่งเป็นเซิร์ฟเวอร์จริง (ที่อยู่ IP ของเซิร์ฟเวอร์) (ยกเว้นบางอย่าง); มันจะได้รู้ว่าพร็อกซี่ เซิร์ฟเวอร์จะทราบหรือไม่รู้จักไคลเอ็นต์จริงขึ้นอยู่กับการกำหนดค่าของ reverse proxy

ป้อนคำอธิบายภาพที่นี่


6
ฉันรู้สึกว่าฉันสามารถคัดลอกและวางคำจำกัดความของคุณไปข้างหลังและพวกเขาจะยังคงเป็นจริง ฉันไม่คิดว่านี่จะอธิบายความแตกต่างที่สำคัญหรือชี้แจงว่า "ย้อนกลับ" เกี่ยวกับพร็อกซีย้อนกลับเป็นอย่างไร
8bitjunkie

6
ผู้รับมอบฉันทะจะกระทำการในนามของใครบางคนเสมอ (ซ่อนตัวตนของตนจากอีกฝ่าย) "ย้อนกลับ" หมายถึงการย้อนกลับด้านซึ่ง "ซ่อน" โดยเป็นไคลเอนต์ในกรณีแรก (พร็อกซีปกติ) และเซิร์ฟเวอร์ในกรณีที่สอง (พร็อกซีย้อนกลับ) อันที่จริงเงื่อนไขสามารถใช้แทนกันได้มันเป็นเพียงเรื่องของการประชุมที่ได้เลือกกรณีแรกเป็นพร็อกซีปกติ (อาจเป็นเพราะเหตุผลทางประวัติศาสตร์) หวังว่ามันจะสมเหตุสมผล
Dimos

43

คำอธิบายที่ดีที่สุดอยู่ที่นี่พร้อมไดอะแกรม:

ในขณะที่พร็อกซี่ข้างหน้าผู้รับมอบฉันทะในนามของลูกค้า(หรือโฮสต์ขอ)เป็นพร็อกซี่กลับผู้รับมอบฉันทะในนามของเซิร์ฟเวอร์

ในขณะที่พร็อกซีฟอร์เวิร์ดซ่อนตัวตนของลูกค้าพร็อกซีย้อนกลับจะซ่อนตัวตนของเซิร์ฟเวอร์


38

พร็อกซีเซิร์ฟเวอร์พร็อกซี่ (และแคชทางเลือก) คำขอเครือข่ายขาออกไปยังแหล่งข้อมูลสาธารณะต่างๆที่ไม่จำเป็นต้องใช้ผ่านอินเทอร์เน็ต พร็อกซีย้อนกลับจับการร้องขอขาเข้า (และแคชทางเลือก) จากอินเทอร์เน็ตและกระจายไปยังทรัพยากรส่วนตัวภายในต่างๆโดยปกติจะมีจุดประสงค์เพื่อความพร้อมใช้งานสูง



28

พร็อกซี (Forward Proxy):

เมื่อคอมพิวเตอร์บน LAN ของคุณเชื่อมต่อกับพร็อกซีเซิร์ฟเวอร์ที่เข้าถึงอินเทอร์เน็ต สิทธิประโยชน์รวมถึงเซิร์ฟเวอร์ที่ถูกเปิดเผยต่ออินเทอร์เน็ตเท่านั้น คนที่อยู่ด้านนอกไม่สามารถเข้าถึงคอมพิวเตอร์ได้โดยตรง ส่งต่อผู้รับมอบฉันทะสามารถปรับปรุงการเข้าถึงอินเทอร์เน็ตสำหรับผู้ใช้โดยแคชดาวน์โหลด พวกเขายังสามารถใช้เพื่อ จำกัด การเข้าถึงบางเว็บไซต์ นอกจากนี้พร็อกซีเซิร์ฟเวอร์เท่านั้นจะต้องมีที่อยู่สาธารณะไม่ใช่ลูกค้าที่เชื่อมต่อกับมัน

Reverse Proxy:

reverse proxy เป็นตรงกันข้ามกับ forward proxy แต่จะทำหน้าที่เป็นพร็อกซีแทนเซิร์ฟเวอร์ที่เชื่อมต่ออยู่ แทนที่จะเข้าถึงเซิร์ฟเวอร์ระยะไกลโดยตรงผู้ใช้จะผ่านพร็อกซีย้อนกลับและเข้าสู่เซิร์ฟเวอร์ที่เหมาะสมจากที่นั่น พร็อกซีย้อนกลับเท่านั้นที่จะต้องใช้ใบรับรอง SSL จะต้องใช้ที่อยู่ IP สาธารณะเดียวเท่านั้นและสามารถจัดการสมดุลภาระการร้องขอที่เข้ามาเพื่อเพิ่มประสบการณ์ผู้ใช้โดยรวม

ป้อนคำอธิบายภาพที่นี่

แหล่งที่มาของรูปภาพ: การสร้าง Forward Proxy โดยใช้การร้องขอเส้นทาง


3
IMHO คำตอบที่ง่ายที่สุด / ดีที่สุด
Vinicius Gonçalves

12

ความเข้าใจของฉันจากApacheคือพร็อกซีนั้นหมายความว่าหากไซต์ x พร็อกซีสำหรับไซต์ y ดังนั้นขอให้ x ส่งคืน y

reverse proxy หมายความว่าการตอบสนองจาก y ถูกปรับเพื่อให้การอ้างอิงทั้งหมดเป็น y กลายเป็น x

เพื่อที่ผู้ใช้จะไม่สามารถบอกได้ว่ามีพร็อกซีเกี่ยวข้อง


10

ตามความเข้าใจของฉัน ...

เมื่อต้องการเริ่มต้นด้วยพร็อกซีทุกคนรู้ว่าหมายถึง "อำนาจในการเป็นตัวแทนของคนอื่น" ขณะนี้มีสองสิ่งคือส่งต่อและย้อนกลับ proxy

ส่งต่อพร็อกซี

สมมติว่าคุณต้องการเข้าถึง "Google" และ "Google" ในทางกลับกันจะมีจำนวนเซิร์ฟเวอร์ที่จะตอบสนองต่อคำขอนั้น

ในกรณีนี้ในขณะที่คุณกำลังขอบางสิ่งจาก Google และคุณไม่ต้องการให้ Google เห็นที่อยู่ IP ของคุณคุณจะใช้การส่งต่อพร็อกซีดังที่อธิบายไว้ด้านล่าง

A → B → C

ตอนนี้ที่นี่คุณคือ A ส่งคำขอผ่านทาง B ดังนั้น C จะคิดว่าคำขอมาจาก B ไม่ใช่ A ในวิธีนี้คุณสามารถป้องกันไม่ให้ที่อยู่ IP ของลูกค้าของคุณไม่ได้สัมผัสกับโลกภายนอก

ย้อนกลับพร็อกซี

ในกรณีนี้เพื่อให้คุณเข้าใจเราจะดำเนินการกรณีส่งต่อพร็อกซีเดียวกัน ที่นี่คุณได้ขอสิ่งที่ Google ซึ่งจะส่งคำขอหนึ่งไปยังเซิร์ฟเวอร์แอพหรือพร็อกซีเซิร์ฟเวอร์อื่นเพื่อรับการตอบกลับ ดังนั้นสิ่งเหล่านี้จะเกิดขึ้นตามที่อธิบายไว้ด้านล่าง

A → B → C

C → D

C ← D

A ← B ← C

จากแผนภาพด้านบนคุณจะเห็นว่าคำขอได้ถูกส่งไปยัง C จาก B ไม่ใช่จาก A จากนั้น C จะมีหนึ่งคำขอที่ส่งไปยัง D. ในทำนองเดียวกันการตอบสนองจะไปที่ C จาก D และ B และ A

แผนภาพด้านบนกล่าวว่าเป็นเพียงบริบทที่มีความสำคัญแม้ว่าผู้รับมอบฉันทะทั้งสองกำลังทำหน้าที่ในลักษณะเดียวกัน แต่พร็อกซีฝั่งไคลเอ็นต์กำลังซ่อนข้อมูลลูกค้าในขณะที่พร็อกซีฝั่งเซิร์ฟเวอร์จะซ่อนข้อมูลฝั่งเซิร์ฟเวอร์


10

ส่งต่อผู้รับมอบสิทธิ์ไม่เปิดเผยตัวตนของลูกค้า (เช่นคิดว่าTor )

Reverse proxyมอบการไม่เปิดเผยตัวตนของเซิร์ฟเวอร์ปลายทาง (เช่นคิดว่าเซิร์ฟเวอร์ที่อยู่เบื้องหลัง DMZ)



9

นี่คือตัวอย่างของ reverse proxy (เป็น load balancer)

ไคลเอนต์ท่องไปที่ website.com และเซิร์ฟเวอร์ที่เข้าชมมีพร็อกซีย้อนกลับที่ทำงานอยู่ พร็อกซีกลับเกิดขึ้นเป็นปอนด์ Pound ใช้การร้องขอและส่งไปยังหนึ่งในสามแอปพลิเคชันเซิร์ฟเวอร์ที่อยู่ด้านหลัง ในตัวอย่างนี้ Pound เป็นตัวโหลดบาลานซ์ นั่นคือมันเป็นการสร้างสมดุลระหว่างโหลดแอพพลิเคชันสามเซิร์ฟเวอร์

แอ็พพลิเคชันเซิร์ฟเวอร์ให้บริการเนื้อหาเว็บไซต์กลับไปยังไคลเอ็นต์


8

ส่งต่อพร็อกซีให้บริการผู้ใช้ : ช่วยให้ผู้ใช้เข้าถึงเซิร์ฟเวอร์

พร็อกซีกลับให้บริการเซิร์ฟเวอร์ : มันปกป้องเซิร์ฟเวอร์จากผู้ใช้


4

หากไม่มีพร็อกซี

หากต้องการดูจากฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์เหมือนกัน:

ไคลเอ็นต์ -> เซิร์ฟเวอร์

หนังสือมอบฉันทะ

จากฝั่งไคลเอ็นต์:

ไคลเอ็นต์ -> พร็อกซี -> เซิร์ฟเวอร์

จากฝั่งเซิร์ฟเวอร์:

ไคลเอ็นต์ -> เซิร์ฟเวอร์

ย้อนกลับพร็อกซี

จากฝั่งไคลเอ็นต์:

ไคลเอ็นต์ -> เซิร์ฟเวอร์

จากฝั่งเซิร์ฟเวอร์:

ไคลเอ็นต์ -> พร็อกซี -> เซิร์ฟเวอร์

ดังนั้นฉันคิดว่าถ้าตั้งค่าโดยผู้ใช้ไคลเอนต์จะเรียกว่าพร็อกซีถ้าตั้งค่าโดยผู้จัดการเซิร์ฟเวอร์มันเป็นพร็อกซีย้อนกลับ

เนื่องจากวัตถุประสงค์และเหตุผลในการตั้งค่าแตกต่างกันพวกเขาจัดการกับข้อมูลด้วยวิธีการต่าง ๆ และใช้ซอฟต์แวร์ที่แตกต่างกัน

   User side          |      Server side
client  <->  proxy  <-->  reverse_proxy <-> real server

มันจะดีกว่าถ้าการแสดงกราฟิก แต่เนื้อหาที่ดี @ tinyhare
Narendra

3

มองจากมุมมองของผู้ใช้: เมื่อส่งคำขอไปยังพร็อกซีหรือพร็อกซีเซิร์ฟเวอร์ย้อนกลับ :

  • พร็อกซี - ต้องมีสองอาร์กิวเมนต์ :

    1) สิ่งที่จะได้รับและ 2) พร็อกซีเซิร์ฟเวอร์ที่จะใช้สื่อกลาง

  • reverse proxy - ต้องการอาร์กิวเมนต์หนึ่งตัว :

    1) สิ่งที่จะได้รับ

พร็อกซีกลับดึงเนื้อหาจากเซิร์ฟเวอร์อื่นถิ่นผู้ใช้และผลตอบแทนผลราวกับว่ามันมาจากพร็อกซีเซิร์ฟเวอร์กลับ


1

คำตอบก่อนหน้านี้ส่วนใหญ่ดี แต่ในความคิดของฉันไม่มีใครใกล้ที่จะตอบสนองได้ดีพอกับคุณภาพ "ย้อนกลับ" ที่แตกต่างทั้งสองอย่าง ในการทำเช่นนั้นจะต้องให้วิธีการมองเห็นธรรมชาติของ "สิ่งที่ตรงกันข้าม" ของสิ่งที่จำเป็นต้องได้รับ (พร็อกซี) และต้องได้รับในทางที่เป็นนามธรรม

พร็อกซี่ (โดยปริยาย "ไปข้างหน้าพร็อกซี่") เชื่อมต่อลูกค้าในประเทศหลายไปยังเซิร์ฟเวอร์ระยะไกลอย่างใดอย่างหนึ่ง:

c--
   |--p--s
c--

พร็อกซี่กลับเชื่อมต่อเซิร์ฟเวอร์ท้องถิ่นหลายรายการให้กับลูกค้าระยะไกลคนใดคนหนึ่ง (แจ้งให้ทราบวิธีหลีรูปแบบ):

s--
   |--p--c
s--

มันเป็นเรื่องของมุมมองจริง ๆ และการทำความเข้าใจแนวคิดอย่างถูกต้องนั้นต้องมีการแยกแยะรายละเอียดที่ไม่จำเป็น (สำหรับแนวคิดเฉพาะ) ถึงแม้ว่ามันจะมีความสำคัญมากเมื่อพูดถึงการปฏิบัติของพร็อกซี รายละเอียดดังกล่าวรวมถึงข้อเท็จจริงที่ว่าทั้งสองสถานการณ์ความเป็นจริงก็คือไคลเอนต์หลายเครื่องเชื่อมต่อกับเซิร์ฟเวอร์หลายเครื่องไคลเอนต์และเซิร์ฟเวอร์อาจไม่ได้อยู่ในระบบโลคัลหรือระยะไกลที่ซึ่งอินเทอร์เน็ตคลาวด์ตั้งอยู่


"เซิร์ฟเวอร์หลายตัวในเครื่องไปยังไคลเอนต์ระยะไกลตัวใดตัวหนึ่ง" - hm ทำไมไม่ใช้หลายเซิร์ฟเวอร์กับหลายไคลเอนต์ ฉันหมายถึง - เซิร์ฟเวอร์นั้นไม่ได้เชื่อมต่อกับลูกค้าอยู่แล้วมันจะตอบสนองต่อคำขอของลูกค้าเท่านั้นไม่ว่าจะเป็นลูกค้าหลายรายหรือลูกค้ารายเดียวกัน
JustAMartin

อ่านอีกครั้ง - โดยเฉพาะย่อหน้าสุดท้ายและพยายามเข้าใจ "ลูกค้าระยะไกลคนใดคนหนึ่ง" เป็นหนึ่งในหลาย ๆ กรณีของการดำเนินงาน
Fotios Basagiannis

ข้อความก็โอเคแค่แผนภาพที่สองทำให้ฉันคิดว่า "เฮ้ลูกค้าคนอื่นไปไหน เมื่อฉันเปรียบเทียบกับแผนภาพแรก
JustAMartin

ใช่นั่นเป็นเพราะลูกค้าคนนั้นไม่ใช่คนอื่นเลย นักพัฒนามักจะคิดในแง่ที่เป็นรูปธรรมและเจาะจงเพราะนี่คือสิ่งที่จะช่วยได้เมื่อคุณใช้สิ่งต่าง ๆ แต่วิธีการคิดแบบเดียวกันนั้นไม่ได้มีประโยชน์มากนักเมื่อคิดถึงนามธรรม
Fotios Basagiannis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.