HAProxy reqrepに関する簡単な質問。バックエンドに送信されるリクエストを書き換え/置き換えようとしています。
次のサンプルドメインとURIがあり、両方とも同じドメイン名を共有していますが、バックエンドWebサーバープールが異なります。
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
要求が各バックエンドのサーバーで要求されていることをエラーログで確認した場合、要求はそれぞれリソース/ web1または/ web2に対するものです。したがって、ドキュメンテーションからコピーして貼り付けたにもかかわらず、正規表現に何か問題があると思います。http://code.google.com/p/haproxy-docs/wiki/reqrep
概要:URIに基づいてトラフィックをルーティングしようとしていますが、バックエンドプールにリクエストを送信するときにHAProxyがURIを削除するようにしたいのです。
ありがとうございました!
-ジム