Tôi có các thiết lập sau:
|-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
|-------|--- backend3:8080
Tôi muốn định cấu hình HAProxy để thêm tiêu đề tùy chỉnh chứa url gốc. Ví dụ: nếu người dùng yêu cầu http://example.com/foo?bar=baz
, tức là:
GET /foo?bar=baz HTTP/1.1
Host: example.com:80
Tôi muốn HAProxy dịch yêu cầu này sang phần phụ trợ như sau:
GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
Các reqadd
lựa chọn duy nhất cho phép tôi để thêm một tiêu đề với một giá trị tĩnh. Tôi đã có thể nhận được phần đường dẫn từ yêu cầu bằng cách sử dụng reqrep
:
reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10]) \0\r\nx-custom-header:\ \2
nhưng thật không may, điều này chỉ chiếm phần đường dẫn của url gốc dẫn đến tiêu đề sau:
x-custom-header: /foo?bar=baz
Vì vậy, câu hỏi của tôi là liệu HAProxy 1.4 có thể kết hợp cả Host
tiêu đề và dòng đầu tiên của yêu cầu HTTP thành tiêu đề tùy chỉnh không
reqadd
với một acl tham chiếube_id
(backend-id) chưa? Nó không chính xác năng động nhưng nó có thể giúp bạn tiến gần hơn nếu số lượng phụ trợ nhỏ ...reqirep
cũng hỗ trợ một acl tùy chọn, do đó bạn có thể viết các biểu thức riêng biệt cho mỗi back-end, mỗi hoạt động chỉ khi một acl phù hợp với phụ trợ đã chọn- Tôi.