HAProxy基于HTTP方法重写HTTP请求
HAProxy rewrite HTTP requests based on HTTP method
我有 REST API。
为了简单起见,假设我有两个服务:
- read.request.com
- write.request.com
如何将所有 read 请求(GET 方法)重写为 read.request.com 和所有 write 使用 HAProxy 向 write.request.com 请求(POST、PUT、DELETE 方法)?
不太确定哪一个适用于您的情况,但希望是。
一个后端
我想这就是你的情况。
frontend http-in
bind *:80
acl is_post method POST
acl is_get method GET
http-request set-header Host write.request.com if is_post
http-request set-header Host read.request.com if is_get
default_backend api
backend api
server one localhost:8080 check
所有这一切都是检查正在使用哪种方法,并在将请求传递给 localhost:8080
.
之前相应地设置 Host
header
两个后端
在此设置中,您有一个代码实例 运行 仅用于读取请求,另一个实例仅用于写入请求。在这种情况下,读取代码是 localhost:8080
上的 运行,写入代码是 localhost:8081
上的 运行。
frontend http-in
bind *:80
acl is_post method POST
acl is_get method GET
use_backend write if is_post
use_backend read if is_get
backend write
http-request set-header Host write.request.com #optional
server write_one localhost:8081 check
backend read
http-request set-header Host read.request.com #optional
server read_one localhost:8080 check
此选项与前一个选项一样,通过检查正在使用的方法开始,但它不是使用一个 HAProxy 后端,而是分成两个。每个后端中的 http-request
行对于此配置是可选的。
希望对您有所帮助。
我有 REST API。
为了简单起见,假设我有两个服务:
- read.request.com
- write.request.com
如何将所有 read 请求(GET 方法)重写为 read.request.com 和所有 write 使用 HAProxy 向 write.request.com 请求(POST、PUT、DELETE 方法)?
不太确定哪一个适用于您的情况,但希望是。
一个后端
我想这就是你的情况。
frontend http-in
bind *:80
acl is_post method POST
acl is_get method GET
http-request set-header Host write.request.com if is_post
http-request set-header Host read.request.com if is_get
default_backend api
backend api
server one localhost:8080 check
所有这一切都是检查正在使用哪种方法,并在将请求传递给 localhost:8080
.
Host
header
两个后端
在此设置中,您有一个代码实例 运行 仅用于读取请求,另一个实例仅用于写入请求。在这种情况下,读取代码是 localhost:8080
上的 运行,写入代码是 localhost:8081
上的 运行。
frontend http-in
bind *:80
acl is_post method POST
acl is_get method GET
use_backend write if is_post
use_backend read if is_get
backend write
http-request set-header Host write.request.com #optional
server write_one localhost:8081 check
backend read
http-request set-header Host read.request.com #optional
server read_one localhost:8080 check
此选项与前一个选项一样,通过检查正在使用的方法开始,但它不是使用一个 HAProxy 后端,而是分成两个。每个后端中的 http-request
行对于此配置是可选的。
希望对您有所帮助。