haproxy 重写 uri 保留后端 header 主机
haproxy rewrite uri keep backend header host
通过在 Haproxy 1.8 中进行重写,我需要将 URI 重定向到另一个域(主机),但在请求中保留 header 主机。
示例:
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 Error 400. The request hostname is invalid"
我的后端似乎不接受我发送的header主机。有人遇到过这个问题吗?
我设法通过 acl 和 "use backend" 指令之间的简单组合解决了这个问题。
例如:
Header 主持人:
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
通过在 Haproxy 1.8 中进行重写,我需要将 URI 重定向到另一个域(主机),但在请求中保留 header 主机。
示例:
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 Error 400. The request hostname is invalid"
我的后端似乎不接受我发送的header主机。有人遇到过这个问题吗?
我设法通过 acl 和 "use backend" 指令之间的简单组合解决了这个问题。
例如:
Header 主持人: 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