Saya memiliki pengaturan berikut:
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
Saya ingin mengonfigurasi HAProxy untuk menambahkan header khusus yang berisi url asli. Misalnya jika permintaan pengguna http://example.com/foo?bar=baz
, yaitu:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
Saya ingin HAProxy menerjemahkan permintaan ini ke backend seperti:
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
The reqadd
pilihan hanya memungkinkan saya untuk menambahkan header dengan nilai statis. Saya bisa mendapatkan bagian jalur dari permintaan menggunakan reqrep
:
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
tetapi sayangnya ini hanya menangkap bagian jalur dari url asli yang menghasilkan tajuk berikut:
x-custom-header: /foo?bar=baz
Jadi pertanyaan saya adalah apakah mungkin dalam HAProxy 1.4 untuk menggabungkan Host
header dan baris pertama permintaan HTTP ke header kustom
reqadd
dengan acl yang mereferensikanbe_id
(backend-id)? Ini tidak persis dinamis tetapi mungkin membuat Anda lebih dekat jika jumlah backend kecil ...reqirep
juga mendukung acl opsional, sehingga Anda dapat menulis regex terpisah untuk setiap back-end, masing-masing hanya aktif jika sebuah acl cocok dengan backend yang dipilih- Indo.