前面我们讲到了haproxy利用acl来实现haproxy动静分离,如果此时有这样一个需求,客户端请求xx.a.com,需要将请求转发到xx.b.com,又例如当客户端访问出错,我们需要将错误code代码提示请求到指定的错误页面,诸如此类需求实现,我们就需要利用haproxy的重定向功能来达到此目的。
一. 利用haproxy redir实现请求重定向
redir的用法: redir <prefix>
使用redir 会将发往当前站点服务的GET和HEAD请求均以302状态码响应发给需要重定向的server或站点点,需要注意的是,在prefix后面不能使用/,且不能使用相对地址,以避免造成循环,例如:
frontend main *:80
default_backend app
backend app
balance roundrobin
server node1 127.0.0.1:81 check weight 3 redir http://www.bluemobi.cn
又例如,如果我们要讲访问的站点重定向到baidu.com
frontend main *:80
default_backend app
backend app
balance roundrobin
server node1 127.0.0.1:81 check weight 3 redir http://www.baidu.cn
注意:redir只做跳转,如客户端输入:http://ip ,会将跳转到指定的页面上,此时客户端的页面的页面也会跳转到指定的页面上,之后所有的请求都会递交到该站点(前提该站点可以与客户端通讯),而不再发往haproxy代理站点。
二. 利用haproxy errorfile实现错误重定向
格式为: errorfile 错误代码code 错误代码文件路径
errorfile 即根据客户端页面错误code状态将指定的错误状态页面提示给客户端,比如友情提示页面,一般如下:
errorfile 403 /etc/haproxy/errorfiles/403.http
#当客户端出现403错误时,将位于/etc/haproxy/errorfiles的403错误页面发送给客户端
errorfile 500 /etc/haproxy/errorfiles/500.http
errorfile 502 /etc/haproxy/errorfiles/502.http
errorfile 503 /etc/haproxy/errorfiles/503.http
errorfile 504 /etc/haproxy/errorfiles/504.http
错误提示页面可以更加友好地提示客户端错误状态,比如做定制页面化跳转
本文出自 “菜鸟的成长记” 博客,请务必保留此出处http://blief.blog.51cto.com/6170059/1752669
原文地址:http://blief.blog.51cto.com/6170059/1752669