1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
| 5) reqirep可以修改http的头; 如果haproxy 配置里要替换主机头, 则: 在backend 选项下面加入: reqirep ^Host:\ (.*) Host:\ 标识 haproxy重定向跳转 - 示例5 (错误/黑白名单/动静分离/读写(上传和下载)分离的重定向 )
(1) haproxy 错误重定向(403), 即黑名单设置 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl blacklist src 172.16.51.250 http-request deny if blacklist 如上配置后, 当来源ip是172.16.51.250时, 就直接返回一个403错误页面!! ============================================================= 当haproxy配置里限制一个来源ip访问时, 直接给用户返回403错误页面, 会显得不太友好, 所以haproxy重定向应运而生. 如下配置, 当来源ip是172.16.51.250时, 直接重定向跳转到172.16.51.10的8000端口的错误页面 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl badhost src 172.16.51.250 block if badhost errorloc 403 http://172.16.51.10:8000 在172.16.51.10机器上部署nginx, 端口为8000, 然后在nginx根目录的index.html里设置错误页面信息, 错误页面信息可以自己随便定义, 比如"抱歉, 页面临时出错, 运维工程师正在抢修中, 请耐心等待~" (2) haproxy 黑名单重定向 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl badhost src 172.16.51.250 redirect location http://172.16.51.10:8000 if badhost 在172.16.51.10机器上部署nginx, 端口为8000, 然后在nginx根目录的index.html里设置错误页面信息, 错误页面信息可以自己随便定义, 比如"抱歉, 这是一个禁止访问的来源ip地址!请尝试从其他机器访问." (3) haproxy 网页重定向 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl shibo.com hdr_beg(host) -i shibo.com redirect code 301 location http://www.shibo.com if shibo.com 温馨提示: 如果不写301,只写code默认是302,临时重定向 (不推荐), 加上301则表示永久重定向 (4) haproxy 访问IP自动跳转到域名 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl 172.16.51.10 hdr(host) -i 172.16.51.10 redirect code 301 location http://www.shibo.com if 172.16.51.10 (5) haproxy 读写分离 配置 (即上传和下载分离) [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl read method GET acl read method HEAD acl write method PUT acl write method POST use_backend dynamic if write default_backend static backend static #"上传"读取操作的负载代理. balance roundrobin server web1 172.16.51.30:80 check backend dynamic #"下载"写入操作的负载代理 balance roundrobin server web2 172.16.51.40:80 check (6) haproxy 动静分离 配置 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. frontend public bind *:80 name clear #bind 172.16.51.10:443 ssl crt /etc/haproxy/haproxy.pem #use_backend static if { hdr_beg(host) -i img } #use_backend static if { path_beg /img /css } use_backend static2 if { path_end -i .php } default_backend static1 # The static backend backend for 'Host: img', /img and /css. backend static1 balance roundrobin server statsrv1 172.16.51.20:80 check inter 1000 backend static2 balance roundrobin server statsrv2 172.16.51.30:80 check inter 1000 (7) haproxy的白名单设置 [root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. frontend tcp-8080-front bind *:8080 mode tcp default_backend tcp-8080-back tcp-8080-back mode tcp balance leastconn tcp-request content accept if { src -f /usr/local/haproxy/white_ip_list } tcp-request content reject server tcp-8080 10.1.27.20:8080 配置中/usr/local/haproxy/white_ip_list文件即为白名单文件, 在文件里配置允许的白名单地址: 一行一个IP或者IP段。 haproxy 重定向跳转 - 示例6
[root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg ............. ............. acl admin_req path_beg -i /admin use_backend admin_80 if admin_req backend admin_80 mode http balance roundrobin server apphost01_8083 172.16.50.133:80 check inter 2000 fall 3 接着去172.16.50.133服务器上看下tomcat配置 [root@tomcat-133 ~]# vim /usr/local/tomcat/conf/server.xml ............. <Context docBase="/data02/kevin-web" path="/" reloadable="false"/> [root@tomcat-133 ~]# cd /data02/kevin-web [root@tomcat-133 kevin-web]# ls admin adminwechat index.html jquery.2.1.4.min.js META-INF WEB-INF kevin-web-0.0.1-SNAPSHOT.war [root@tomcat-133 kevin-web]# ls bobo.html 最后, 可验证: 访问http://www.kevin.com/admin/bobo.html 实际上返回的是172.16.50.133服务器的/data02/kevin-web/admin/bobo.html页面内容 haproxy 重定向跳转 - 示例7 (haproxy 代理 https)
|