การสะท้อนการจราจรด้วย Nginx


16

ฉันต้องการทำซ้ำ / จำลองการรับส่งข้อมูลที่มอบให้เซิร์ฟเวอร์ / ทรัพยากรของฉัน

ฉันหมายถึงฉันมีเซิร์ฟเวอร์ A และ B และ N (nginx) เป็นเว็บเซิร์ฟเวอร์

ปริมาณข้อมูลทั้งหมดที่ส่งไปยัง N / ทรัพยากร -> เปลี่ยนเส้นทางไปยัง A และ B

เป็นไปได้ไหม?


2
คุณอาจไม่ต้องการทำสิ่งนี้ คุณมีอะไรจริงๆพยายามที่จะทำอย่างไร?
Michael Hampton

1
ฉันต้องการมันจริงๆเพื่อทำมัน
Agus

2
ฉันมีกรณีใช้งาน ฉันมีลูกค้าที่ส่งข้อมูลไปยังเซิร์ฟเวอร์ที่โครงสร้างพื้นฐานการผลิตของเราใช้ ฉันต้องการข้อมูลเดียวกันที่ถูกส่งไปยังเซิร์ฟเวอร์ dev ของฉันเพื่อการพัฒนาต่อไป ไคลเอ็นต์สามารถส่งข้อมูลไปที่ 1 endpoint เท่านั้น อย่าถามว่าทำไมฉันไม่รู้
Dude

1
โอ้ฉันจำเป็นต้องใช้ปริมาณข้อมูลที่ซ้ำกันฉันหมายถึง traficc จะดำเนินการโดย A แต่ B จะยอมให้กระบวนการออฟไลน์
Agus

2
ฉันพบคำถามอีกรุ่นหนึ่งพร้อมคำตอบที่ช่วยฉันได้: serverfault.com/a/515531/175380โดยทั่วไปคุณตั้งค่าสถานที่ที่จะสะท้อนในpost_actionทิศทาง สิ่งนี้จะทำงานหลังจากที่เครื่องผลิตพอใจ
Adam Lukens

คำตอบ:


14

ตอนนี้ Nginx มีโมดูลมิเรอร์ http เอกสารอยู่ที่https://nginx.org/en/docs/http/ngx_http_mirror_module.html

ตัวอย่างการกำหนดค่าจากเอกสาร:

location / {
    mirror /mirror;
    proxy_pass http://backend;
}

location /mirror {
    internal;
    proxy_pass http://test_backend$request_uri;
}

มีวิธีที่ฉันสามารถใช้มิเรอร์แม้ว่าหนึ่งในโฮสต์ไม่ทำงานฉันมีกรณีการใช้งานสำหรับสิ่งนั้น
Sagar Kharab

3

นี่คือคุณสมบัติใหม่จาก nginx (1.13.4): http://nginx.org/en/docs/http/ngx_http_mirror_module.html#mirror

โมดูล ngx_http_mirror_module (1.13.4) ใช้การทำมิรเรอร์ของคำร้องขอดั้งเดิมโดยสร้าง subrequests มิเรอร์ย่อย การตอบกลับการทำมิรเรอร์ย่อยจะถูกเพิกเฉย


2

อ้างอิงจากREADMEของพวกเขาดูเหมือนว่า GOR สามารถช่วยคุณแก้ปัญหาของคุณได้

ฉันไม่เคยใช้มาก่อนเพิ่งสะดุดเมื่อสัปดาห์นี้โชคดีมาก!


เฮ้กับการใช้ GOR ​​เพียงแค่รับทราบด้วย http 200 ดังนั้นหากเขามีออบเจ็กต์การตอบสนองหรือการตรวจสอบความถูกต้องเขาต้องการทำกับสิ่งที่ลูกค้ากำลังส่งเขาฉันไม่คิดว่ามันจะใช้ได้กับเขา เท่าที่ฉันสามารถบอกได้และฉันใหม่กับ Gor คุณไม่สามารถส่งผ่านผลลัพธ์ของออบเจ็กต์จากหนึ่งในกลุ่มเอาต์พุตของคุณ
PatrickWalker

เรากำลังทดสอบ GOR ในขณะนี้และเรามีปัญหาสองสามอย่าง มันตีความส่วนหัวเช่น: สถานที่ตั้ง: // newpath การสร้างคำขอเช่น GET // newpath เปลี่ยนเส้นทางส่วนหัวดั้งเดิมที่หลวม (รวมถึงโฮสต์ผู้ใช้เป็นต้น) เรากำลังย้ายไปยังเครื่องมืออื่น
Aalex Gabi

1

คุณไม่สามารถทำมิเรอร์คำร้องขอด้วย NGINX แต่คำร้องขอพร้อมใช้งานเป็นตัวแปร คุณสามารถใช้การเขียนสคริปต์ Lua เพื่อส่งตัวแปรนั้นไปยังเซิร์ฟเวอร์บุคคลที่สามเป็นคำขอย่อยได้ http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request


0

หลังจากขุดและขุดฉันพบวิธีแก้ปัญหา คุณสามารถดูได้ที่นี่คัดลอกและส่งคำขอไปยังเซิร์ฟเวอร์ nginx อื่นสำหรับการทดสอบการรับส่งข้อมูลจริงโดย @scari

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

หวังว่ามันจะช่วยได้
Liron

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