Mam następującą konfigurację:
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
Chciałbym skonfigurować HAProxy, aby dodać niestandardowy nagłówek zawierający oryginalny adres URL. Na przykład, jeśli użytkownik zażąda http://example.com/foo?bar=baz, tj .:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
Chciałbym, aby HAProxy przetłumaczył tę prośbę na backend w następujący sposób:
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
Ta reqaddopcja pozwala mi tylko dodać nagłówek o wartości statycznej. Udało mi się pobrać część ścieżki z żądania za pomocą reqrep:
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
ale niestety przechwytuje to tylko część ścieżki oryginalnego adresu URL, co powoduje następujący nagłówek:
x-custom-header: /foo?bar=baz
Moje pytanie brzmi więc, czy w HAProxy 1.4 można połączyć Hostnagłówek i pierwszą linię żądania HTTP w niestandardowy nagłówek
reqaddz acl, który odwołuje się dobe_id(backend-id)? Nie jest to dokładnie dynamiczne, ale może cię przybliżyć, jeśli liczba backendów jest niewielka ...reqirepobsługuje również opcjonalny acl, więc możesz napisać osobne wyrażenia regularne dla każdego backendu, każdy aktywny tylko, jeśli acl pasuje do wybranego backendu ID.