小编Dar*_*rov的帖子

如何添加包含原始请求资源绝对地址的自定义标头

我有以下设置:

                 |-------|--- backend1:8080
example.com:80---|HAProxy|--- backend2:8080
                 |-------|--- backend3:8080
Run Code Online (Sandbox Code Playgroud)

我想配置 HAProxy 以添加包含原始 url 的自定义标头。例如,如果用户请求http://example.com/foo?bar=baz,即:

GET /foo?bar=baz HTTP/1.1
Host: example.com:80
Run Code Online (Sandbox Code Playgroud)

我希望 HAProxy 将此请求转换为后端,如下所示:

GET /foo?bar=baz HTTP/1.1
Host: backend1:8080
x-custom-header: http://example.com/foo?bar=baz
Run Code Online (Sandbox Code Playgroud)

reqadd选项仅允许我添加具有静态值的标题。我能够使用reqrep以下命令从请求中获取路径部分:

reqrep ^([^\ ]*)\ ([^\ ]*)\ (HTTP\/1\.[10])  \0\r\nx-custom-header:\ \2
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这仅捕获原始 url 的路径部分,导致以下标题:

x-custom-header: /foo?bar=baz
Run Code Online (Sandbox Code Playgroud)

所以我的问题是在 HAProxy 1.4 中是否有可能Host将 HTTP 请求的标头和第一行组合成一个自定义标头

haproxy

11
推荐指数
1
解决办法
4万
查看次数

标签 统计

haproxy ×1