Bagaimana saya bisa membuat permintaan rute haproxy berdasarkan substrings URL?

13

Penyeimbang beban diatur dengan dua ujung belakang.

URI permintaan akan terlihat seperti berikut:

http://example.com/answers/submit
http://example.com/tag-02/answers/submit

Bagaimana saya bisa mengkonfigurasi haproxy sedemikian rupa sehingga permintaan dikirim ke salah satu atau kedua ujung belakang, tergantung pada format permintaan URI? Satu-satunya perbedaan antara permintaan adalah /tag-02/dalam permintaan URI.

File konfigurasi haproxy untuk ini dengan sedikit penjelasan akan sangat dihargai, karena saya baru mengenal haproxy.

Otodidak
sumber

Jawaban:

13

Anda ingin menggunakan ACL :

backend be1 # this is your default backend
  ...
backend be2 # this is for /tag-02 requests
  ...

frontend fe
  ...
  default_backend be1
  acl url_tag02 path_beg /tag-02
  use_backend be2 if url_tag02

Bagian 7 dari panduan konfigurasi HAProxy memiliki perincian tentang ACL, tetapi Anda harus mengetahui use_backendmantra sihir yang disembunyikan di bagian 4 panduan ini untuk mengetahui apa yang harus dilakukan dengan ACL.

natacado
sumber
1
Meskipun gaya ACL yang dideklarasikan secara umum lebih mudah dibaca dan digunakan kembali, Anda dapat, jika Anda suka, menyertakan deklarasi ACL dalam use_backenddirektif itu sendiri, dengan use_backend be2 if { path_beg /tag-02 }.
womble
0

Untuk memberikan contoh yang lebih baik untuk jawaban di atas, di bawah ini adalah contoh konfigurasi.

frontend https-in
   bind *:443 ssl crt /etc/ssl/server.pem
   mode http
   redirect scheme https if !{ ssl_fc }

   acl uri_help path_beg /help
   use_backend help if uri_help

backend help
    balance     roundrobin
    server      help yourbackendserver.com check
Joel Nishanth Ponukumatla
sumber