Score:0

จะบังคับการกำหนดเส้นทางเฉพาะตาม SNI ใน HAProxy ได้อย่างไร

ธง in

ฉันมีการกำหนดค่า HAProxy ต่อไปนี้:

ฟัง sni-443
    ผูก *:443
    โหมด tcp

    หมดเวลาเชื่อมต่อ 4 วินาที
    ลูกค้าหมดเวลา 3m
    หมดเวลาเซิร์ฟเวอร์ 3m
    tcp-request ตรวจสอบ-delay 5 วินาที
    เนื้อหาคำขอ tcp ยอมรับหาก { req.ssl_hello_type 1 }
    acl ไม่มี ssl req.ssl_hello_type 0

    ใช้เซิร์ฟเวอร์ backend1.default.svc.cluster.local ถ้า !no-ssl { req_ssl_sni -i www.example.com }
    เซิร์ฟเวอร์ backend1.default.svc.cluster.local 10.96.245.95:443 น้ำหนัก 0

    ใช้เซิร์ฟเวอร์ backend2.default.svc.cluster.local ถ้า !no-ssl { req_ssl_sni -i demo.example.com }
    เซิร์ฟเวอร์ backend2.default.svc.cluster.local 10.96.184.199:443 น้ำหนัก 0

ถ้าฉันไปเยี่ยม www.example.com, ทุกอย่างปกติดี. แต่เมื่อฉันทำเช่นนั้นหลังจากโหลดใหม่ การสาธิต.example.com ด้วยความถี่สูง (การกด Shift-Ctrl-R ในเบราว์เซอร์) จบลงที่ การสาธิต.example.com. ใช่แน่นอน: ฉันเปิด www.example.com ในเบราว์เซอร์ แต่ HAProxy กำหนดเส้นทางนั้นไปยัง backend2 (ซึ่งส่งคืนข้อผิดพลาด)

เห็นได้ชัดว่า HAProxy ไม่เข้าใจอย่างถ่องแท้ว่าบริการทั้งสองไม่ใช่ทางเลือกอื่นสำหรับการทำโหลดบาลานซ์ แต่เป็นผลิตภัณฑ์ที่แตกต่างกันมาก ฉันสามารถ ทำให้มั่นใจ นั่น www.example.com ลงท้ายด้วย backend1?

Michael Hampton avatar
cz flag
เรียกฉันว่าโรงเรียนเก่า แต่เพื่อความชัดเจน ฉันชอบแยกส่วน "ส่วนหน้า" และ "ส่วนหลัง" ออกจากกัน แทนที่จะแยกส่วน "ฟัง" ผสมกัน อย่างไรก็ตามการกำหนดค่าของคุณดูดีเป็นอย่างอื่นและฉันไม่เห็นสิ่งใดที่นี่ที่จะทำให้เกิดปัญหา คุณมีอย่างอื่นอยู่ข้างหน้า haproxy หรือไม่?
in flag
เลขที่แต่ขณะนี้ฉันตรวจสอบว่าข้อเท็จจริงที่ว่าใบรับรอง TLS สำหรับแบ็กเอนด์ทั้งสองมีทั้งโดเมน (กล่าวคือ ใบรับรองเดียวกันที่มีนามแฝง) อาจทำให้ HAproxy สับสนได้
Score:1
ธง ng

นี่คือตัวอย่างจากเอกสารสำหรับ req_ssl_sni:

tcp-request ตรวจสอบ-delay 5 วินาที
เนื้อหาคำขอ tcp ยอมรับถ้า { req_ssl_hello_type 1 }
use_backend bk_allow ถ้า { req_ssl_sni -f allow_sites }
default_backend bk_sorry_page

คุณอาจต้องการ tcp-request ตรวจสอบ-ล่าช้า ตั้งค่าเป็นบางอย่าง เพราะการไม่ตั้งค่าหมายความว่า haproxy ไม่รอเลยและไม่รู้ว่า SNI คืออะไร
คำอธิบายที่ยาวขึ้นใน เอกสารสำหรับ tcp-request ตรวจสอบ-ล่าช้า

in flag
ฉันเพิ่มการตั้งค่าเพิ่มเติมในการกำหนดค่าขั้นต่ำของฉัน พวกเขาไม่ได้ป้องกันพฤติกรรมที่โชคร้ายของ HAProxy อะไรคือความแตกต่างระหว่าง `use_backend` และ `use-server`? อาจเป็นสาเหตุนี้หรือไม่?
tbielaszewski avatar
ng flag
`เซิร์ฟเวอร์' เป็นบริการ IP:PORT เดียว ในขณะที่ 'แบ็กเอนด์' เป็นโครงสร้างการกำหนดค่าทั้งหมดใน haproxy เช่น 'listen' หรือ 'frontend' ซึ่งมีกฎ ACL และเซิร์ฟเวอร์ของตัวเอง การกำหนดแบ็กเอนด์แยกจากกันและวางเซิร์ฟเวอร์ไว้ที่นั่นอาจช่วยแยกเซิร์ฟเวอร์เหล่านั้นเพิ่มเติมได้ คุณสามารถโพสต์บันทึก haproxy ที่มี SNI อยู่ในนั้นได้ไหม ถ้าเป็นไปได้

โพสต์คำตอบ

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