다음과 같은 설정이 있습니다.
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
원래 URL을 포함하는 사용자 정의 헤더를 추가하도록 HAProxy를 구성하고 싶습니다. 예를 들어 사용자가을 요청하는 경우 http://example.com/foo?bar=baz
:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
HAProxy가이 요청을 다음과 같이 백엔드로 변환하고 싶습니다.
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
이 reqadd
옵션을 사용하면 정적 값으로 헤더를 추가 할 수 있습니다. 다음을 사용하여 요청에서 경로 부분을 가져올 수있었습니다 reqrep
.
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
그러나 불행히도 이것은 원래 URL의 경로 부분 만 캡처하여 다음 헤더를 생성합니다.
x-custom-header: /foo?bar=baz
따라서 내 질문은 HAProxy 1.4Host
에서 HTTP 요청 의 헤더와 첫 번째 줄을 사용자 정의 헤더로 결합 할 수 있는지 여부 입니다.
reqadd
를 참조하는 acl과 결합을 시도 했습니까be_id
? 정확하게 동적이지는 않지만 백엔드 수가 적 으면 더 가까이 갈 수 있습니다 ...reqirep
선택적 acl도 지원하므로 각 백엔드에 대해 별도의 정규 표현식을 작성할 수 있습니다. 각 acl이 선택한 백엔드와 일치하는 경우에만 활성화됩니다. 신분증.