Aşağıdaki kurulum var:
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
Orijinal URL içeren özel bir üstbilgi eklemek için HAProxy yapılandırmak istiyorum. Örneğin kullanıcı isterse http://example.com/foo?bar=baz
, yani:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
HAProxy bu isteği arka ucuna bu şekilde çevirmek istiyorum:
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
Bu reqadd
seçenek yalnızca statik değere sahip bir başlık eklememe izin veriyor. Ben kullanarak istek yolu yolunu başardı reqrep
:
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
ancak ne yazık ki bu, orijinal URL'nin yalnızca aşağıdaki başlıkla sonuçlanan yol kısmını yakalar:
x-custom-header: /foo?bar=baz
Benim sorum HAProxy 1.4'teHost
HTTP isteğinin hem üstbilgisini hem de ilk satırını özel bir üstbilgide birleştirmenin mümkün olup olmadığı
reqadd
başvuran bir acl ile birleştirmeyi denedinizbe_id
mi? Tam olarak dinamik değil, ancak arkareqirep
uçların sayısı azsa sizi daha da yaklaştırabilir ... ayrıca isteğe bağlı bir acl'yi de destekler, böylece her bir arka uç için ayrı regex'ler yazabilirsiniz, her biri yalnızca bir acl seçilen arka uca uyuyorsa İD.