Score:0

nginx Reverse-Proxy: ใช้โมดูลสตรีมสำหรับการส่งผ่านและย้อนกลับพร็อกซี

ธง in

ฉันใช้โมดูลสตรีมเพื่อส่งผ่านทราฟฟิก tls โดยที่ฉันไม่สามารถย้อนกลับพร็อกซีได้ เช่น เพราะฉันไม่มีใบรับรอง (การติดตั้ง 3CX ในเครื่อง) หรือทำให้สิ่งต่าง ๆ เสียหาย (ssl vpn พร้อมใบรับรองไคลเอนต์) จากนั้นฉันส่งต่อ "ส่วนที่เหลือ" ไปยัง IP อื่นบนโฮสต์เดียวกัน (127.0.0.1) สำหรับการย้อนกลับพร็อกซี ปัญหาคือ remote_addr ไม่ใช่ 127.0.0.1 เสมอไป และดูเหมือนจะไม่มีวิธีตั้งค่าที่อยู่ระยะไกล "จริง" เพื่อหลีกเลี่ยงสิ่งนี้ ฉันเปิดใช้งาน proxy_protocol และใช้ $proxy_protocol_addr

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

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

ฉันไม่ยึดติดกับวิธีการนี้อย่างแน่นอน ถ้าใครมีความคิดวิธีการบรรลุสิ่งนี้ด้วยวิธีที่แตกต่าง/ดีกว่า ฉันยินดีรับฟัง

ลำธาร {
  แผนที่ $ssl_preread_server_name $targetBackend {
    3cx.example.com 192.168.1.2:443;
    vpn.example.com 192.168.1.3:443;
    ค่าเริ่มต้น 127.0.0.1:443;
  }
  เซิร์ฟเวอร์ {
    ฟัง 192.168.1.100:443;
    proxy_connect_timeout 1;
    proxy_timeout 3 วินาที;
    ตัวแก้ไข 192.168.1.1;
    proxy_protocol บน;
    proxy_pass $targetBackend;
    ssl_preread บน;
  }

ดังนั้น ... วิธีทำให้ proxy_protocol มีเงื่อนไข (afaik หากใช้งานไม่ได้ในบริบทของสตรีม) หรือแก้ไขด้วยวิธีอื่น

Score:0
ธง us

ดูเหมือนว่าคุณต้องติดตั้งส่วนหน้าสำหรับ 3cx และ วีพีเอ็น ที่ถอดรหัสโปรโตคอล PROXY และแปลงเป็นคำขอ HTTP สำหรับเว็บเซิร์ฟเวอร์จริง

อีกทางเลือกหนึ่งคือการมีอินสแตนซ์ nginx แยกต่างหากสำหรับบริการเว็บและโปรโตคอลพร็อกซี

Questi avatar
in flag
ไม่ วิธีนี้ใช้ไม่ได้ ฉันลองแล้ว แต่ดูเหมือนว่าจะใช้ตามตัวอักษรและจะไม่แก้ไขตัวแปร :-(
us flag
จากนั้น ฉันคิดว่าคุณต้องติดตั้งพร็อกซีที่เข้ากันได้หน้า '3cx' และ 'vpn' ซึ่งจะถอดรหัสโปรโตคอล PROXY และส่งต่อคำขอไปยังเว็บไซต์ต่างๆ
Questi avatar
in flag
ดังนั้นโดยทั่วไปสตรีมพร็อกซีหนึ่งรายการที่มี proxy_protocol ซึ่งส่งต่อไปยังสตรีมพร็อกซีอื่นซึ่งฟัง proxy_protocol แล้วส่งต่อโดยไม่มี proxy_protocol มันจะทำงานหรือไม่ นี่เป็นวิธีแก้ปัญหาที่ง่ายที่สุดหรือไม่? ฟังดูเป็นวิธีแก้ปัญหา
us flag
ใช่ นั่นเป็นวิธีแก้ปัญหา แต่เนื่องจาก `proxy_protocol` แบบมีเงื่อนไขดูเหมือนจะไม่สามารถทำได้ ดังนั้นมันจึงเป็นวิธีเดียว อีกวิธีหนึ่งคือการเรียกใช้อินสแตนซ์ nginx แยกกันสองอินสแตนซ์ อีกอันหนึ่งจัดการเว็บไซต์และอีกอันหนึ่งใช้พร็อกซี
Questi avatar
in flag
โอเคขอบคุณ. ดูเหมือนว่าแม้ว่าจะเป็นวิธีแก้ปัญหา แต่เป็นทางออกเดียว? ถ้าใครรู้วิธีแก้ไขที่ดีกว่า โปรดอย่าลังเลที่จะโพสต์ จนกว่าฉันจะทำเครื่องหมายว่านี่คือวิธีแก้ไข ขอบคุณอีกครั้ง ที่จริง... ฉันสังเกตว่า "คำตอบ" อยู่ในความคิดเห็นไม่ใช่คำตอบ... คุณอาจโพสต์คำตอบใหม่หรือแก้ไขคำตอบปัจจุบันของคุณ
us flag
ฉันอัปเดตคำตอบแล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา