เช่น. ส่วนหัวประกอบด้วย: X-DEMO-HOST-VERSION: test
- ฉันจะต้องตั้งค่าการกำหนดค่า haproxy เพื่อส่งต่อไปยังแบ็กเอนด์เฉพาะได้อย่างไร สามารถทำได้ภายในแบ็กเอนด์หรือในฟรอนต์เอนด์หรือไม่
เกี่ยวกับเอกสาร ฉันสับสนนิดหน่อย
เช่น. ส่วนหัวประกอบด้วย: X-DEMO-HOST-VERSION: test
- ฉันจะต้องตั้งค่าการกำหนดค่า haproxy เพื่อส่งต่อไปยังแบ็กเอนด์เฉพาะได้อย่างไร สามารถทำได้ภายในแบ็กเอนด์หรือในฟรอนต์เอนด์หรือไม่
เกี่ยวกับเอกสาร ฉันสับสนนิดหน่อย
คุณต้องตรวจสอบค่าส่วนหัว (hdr ใน haproxy) ผ่าน ACL ลองมัน:
frontend header_front
bind *:80
mode http
option forwardfor if-none
acl demo_host_version hdr(X-DEMO-HOST-VERSION) -i test
use_backend test_backend if demo_host_version
default_backend prod_backend
backend test_backend
...
backend prod_backend
...
ทดสอบส่วนหัวของคุณ:
acl demo_host_version hdr(X-DEMO-HOST-VERSION) -i test
use_backend test_backend if demo_host_version
ตรรกะ: IF
X-DEMO-HOST-VERSION=test
ใช้ test_backend ELSE
ใช้ prod_backend
UPD: หากคุณต้องการ acl สำหรับเส้นทางใน URL (example.com/test/
):
acl demo_host_path path_beg /test/
use_backend test_backend if demo_host_path
หากคุณต้องการใช้ ACL สองตัวในคำสั่ง if ให้ใช้:
acl demo_host_version hdr(X-DEMO-HOST-VERSION) -i test
acl demo_host_path path_beg /test/
use_backend test_backend if demo_host_path demo_host_version
UPD สำหรับตรวจสอบ URL:
ตรวจสอบโดเมนย่อย หากคุณโดเมน test.example.com
หรือ test.abc.com
ลอง:
acl host_sub_domain hdr_beg(host) -i test
สำหรับการตรวจสอบโดเมนแบบเต็ม เช่น test.example.com
ให้ลองทำดังนี้:
acl host_full_domain hdr(host) -i test.example.com
use_backend test_backend if host_full_domain demo_host_version
คุณทำให้วันของฉันเป็นจริง! คำถามสุดท้าย: การค้นหาทุกส่วนหัวและเปรียบเทียบกับโดเมนทั้งหมดมีผลกระทบต่อประสิทธิภาพอย่างมากหรือไม่
- person Pegasus1985; 29.10.2019