Başlangıçta istenen kaynağın mutlak adresini içeren özel başlık nasıl eklenir


11

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 reqaddseç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ığı


(Backend-id) 'ye reqaddbaşvuran bir acl ile birleştirmeyi denediniz be_idmi? Tam olarak dinamik değil, ancak arka reqirepuç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.
Michael - sqlbot

Yanıtlar:


18

Kısa cevap: hayır, bunu HAProxy 1.4'te yapamazsınız .


Ancak, bu soruyu 1.5+ için bulanlar için:

HAProxy 1.5+ sürümünde, %[variable]sözdizimi aracılığıyla değişkenlere başvurabilirsiniz ve yalnızca statik dizeleri kullanmakla sınırlı değilsiniz. HAProxy yapılandırma kılavuzunun bölüm 7.3'te hangi değişkenlerin mevcut olduğunu görebilirsiniz (özellikle katman 7 değişkenleri için 7.3.6 ).

Sizin durumunuz için, ham şuna bakıyorsunuz, urlşöyle:

http-request set-header X-Custom-Header %[url]

1
1.4'te bunun mümkün olmadığı sonucunu doğruladığım için teşekkürler. Geçtim nginx.
Darin Dimitrov

% [url] her zaman tam URL değildir, ancak haproxy'nin yapabileceği en iyi şey olduğu görülmektedir. HAProxy 1.8 URL değişken dokümanlar: cbonte.github.io/haproxy-dconv/1.8/configuration.html#7.3.6-url
zie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.