haproxy重写uri keep后端标头主机

时间:2018-07-25 22:10:01

标签: http url-rewriting header haproxy host

通过在Haproxy 1.8中进行重写,我需要使URI重定向到另一个域(主机),但将标头主机保留在请求中。

示例:

www.mysite.com/api-> 104.4.4.4/api(rw)->结果www.mysite.com/api(响应)

我使用HA的一些参数进行了很多测试,并且设法获得了成功,但是有一个问题。

这是我的实际计划

backend site1
acl path_to_rw url_beg /api
acl mysite hdr(host) -i www.mymainsite.com

http-request set-header Host www.mymainsite.com if mysite path_to_rw
reqirep ^Host Host:\ host_to_forward/api if mysite path_to_rw
cookie SERVERID insert indirect nocache maxlife 1h
server site1 myhost:80 check cookie site1

我的后端是IIS服务器,我的重写工作正常。但是,下面出现错误:

“ HTTP错误400。请求主机名无效”

似乎我的后端不接受我发送的标头主机。有人已经有这个问题了吗?

1 个答案:

答案 0 :(得分:0)

我通过acl´s和“使用后端”指令之间的简单组合来解决了这个问题。

例如:

标头主机: www.mysite.com

其他来源的繁殖途径 / api

acl myhost hdr(host) -i www.myhost.com
acl path_api url_reg -i  /API(.*)
use_backend be_origin_servers if myhost path_api

backend be_origin_servers
server myserver1 10.10.10.10 check cookie myserver1