HAProxy reqrep에 관한 실제 빠른 질문. 백엔드로 전송되는 요청을 다시 쓰거나 바꾸려고합니다.
동일한 도메인 이름을 공유하지만 다른 백엔드 웹 서버 풀을 공유하는 다음 예제 도메인 및 URI가 있습니다.
http://domain/web1
http://domain/web2
web1은 백엔드 webfarm1로 가고 web2는 webfarm2로 가고 싶습니다. 현재 이것은 일어나고 있습니다. 그러나 요청이 백엔드로 전송되면 web1 또는 web2 URI를 제거하고 싶습니다.
여기 내 haproxy.cfg가 있습니다
frontend webVIP_80
mode http
bind :80
#acl routing to backend
acl web1_path path_beg /web1
acl web2_path path_beg /web2
#which backend
use_backend webfarm1 if web1_path
use_backend webfarm2 if web2_path
default_backend webfarm1
backend webfarm1
mode http
reqrep ^([^\ ]*)\ /web1/(.*) \1\ /\2
balance roundrobin
option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
server webtest1 10.0.0.10:80 weight 5 check slowstart 5000ms
server webtest2 10.0.0.20:80 weight 5 check slowstart 5000ms
backend webfarm2
mode http
reqrep ^([^\ ]*)\ /web2/(.*) \1\ /\2
balance roundrobin
option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
server webtest1-farm2 10.0.0.110:80 weight 5 check slowstart 5000ms
server webtest2-farm2 10.0.0.120:80 weight 5 check slowstart 5000ms
내가 이동하는 경우 http://domain/web1
또는 http://domain/web2
I 오류 로그에서 볼 것을 requst 각각 자원 / WEB1 또는 / Web2입니다위한 것으로 각 백엔드에있는 서버에 요청. 따라서 문서에서 복사하여 붙여 넣었지만 정규 표현식에 문제가 있다고 생각합니다. http://code.google.com/p/haproxy-docs/wiki/reqrep
요약 : URI를 기반으로 트래픽을 라우팅하려고하지만 요청을 백엔드 풀로 보낼 때 HAProxy가 URI를 제거하기를 원합니다.
고맙습니다!
짐