ฉันมีสองแบ็กเอนด์ (b1, b2) นั่งอยู่ด้านหลังส่วนหน้า (f1) เดียวกันใน HAProxy การกำหนดเส้นทางตามชื่อโฮสต์ ฉันสามารถสร้าง websocket เป็นทั้ง b1 และ b2 จากแล็ปท็อปของฉัน แต่ถ้าฉันพยายามสร้าง websocket เป็น b2 จาก b1 (ถึง f1) ฉันได้รับข้อผิดพลาด 1006 (ปิดผิดปกติ - EOF ที่ไม่คาดคิด) การ Ping b2 จาก b1 สำเร็จ นี่คือการกำหนดค่าของฉัน:
ส่วนหน้า f1
ผูก 192.168.1.1:443 ชื่อ 192.168.1.1:443 ssl crt-list /var/etc/haproxy/ReverseProxyHTTP.crt_list
โหมด http
เข้าสู่ระบบทั่วโลก
ตัวเลือก httplog
ตัวเลือก http-keep-alive
ตัวเลือกไปข้างหน้าสำหรับ
http-request set-header X-Forwarded-Proto http ถ้า !https
http-request set-header X-Forwarded-Proto https ถ้า https
ลูกค้าหมดเวลา 30,000
acl b1 var(txn.txnhost) -m ขอ -i b1
acl b2 var(txn.txnhost) -m ขอ -i b2
acl hdr_connection_upgrade hdr (การเชื่อมต่อ) - ฉันอัพเกรด
acl hdr_upgrade_websocket hdr (อัปเกรด) -i websocket.dll
use_backend b1ws ถ้า b1 hdr_connection_upgrade hdr_upgrade_websocket
use_backend b1 ถ้า b1
use_backend b2 ถ้า b2
แบ็กเอนด์ b1ws
โหมด http
รหัส 119
เข้าสู่ระบบทั่วโลก
แบบติดโต๊ะ ip size 50k หมดอายุ 30m
ติดsrc
แหล่งสมดุล
หมดเวลาเชื่อมต่อ 30,000
หมดเวลาเซิร์ฟเวอร์ 30,000
ลองใหม่ 3
เซิร์ฟเวอร์ s1 192.168.1.2:443 id 101 ssl ตรวจสอบว่าไม่มีตัวแก้ไข globalresolvers
แบ็กเอนด์ b1
โหมด http
รหัส 117
เข้าสู่ระบบทั่วโลก
แบบติดโต๊ะ ip size 50k หมดอายุ 30m
ติดsrc
แหล่งสมดุล
หมดเวลาเชื่อมต่อ 30,000
หมดเวลาเซิร์ฟเวอร์ 30,000
ลองใหม่ 3
เซิร์ฟเวอร์ s1 192.168.1.2:443 id 101 ssl ตรวจสอบไม่มีตัวแก้ไข globalresolvers alpn h2,http/1.1
แบ็กเอนด์ b2
โหมด http
รหัส 120
เข้าสู่ระบบทั่วโลก
แบบติดโต๊ะ ip size 50k หมดอายุ 30m
ติดsrc
แหล่งสมดุล
หมดเวลาเชื่อมต่อ 30,000
หมดเวลาเซิร์ฟเวอร์ 30,000
ลองใหม่ 3
อุโมงค์หมดเวลา 3600 วินาที
เซิร์ฟเวอร์ s2 192.168.1.3:443 id 101 ssl ตรวจสอบว่าไม่มีตัวแก้ไข globalresolvers
หมายเหตุ: b1 และ b1ws ชี้ไปที่เซิร์ฟเวอร์และพอร์ตเดียวกัน แม้ว่า b1 จะชอบ http2 สำหรับ grpc หากมีส่วนหัวของ websocket ระบบจะใช้ b1ws