URLサブストリングに基づいてhaproxyルートリクエストを作成するにはどうすればよいですか?


13

ロードバランサーは2つのバックエンドでセットアップされます。

要求URIは次のようになります。

http://example.com/answers/submit
http://example.com/tag-02/answers/submit

リクエストURIの形式に応じて、2つのバックエンドのいずれか一方にリクエストが送信されるようにhaproxyを構成するにはどうすればよいですか?リクエスト間の唯一の違い/tag-02/はリクエストURIです。

私はhaproxyが初めてなので、このためのhaproxy構成ファイルを少し説明していただければ幸いです。

回答:


13

ACLを使用する場合:

backend be1 # this is your default backend
  ...
backend be2 # this is for /tag-02 requests
  ...

frontend fe
  ...
  default_backend be1
  acl url_tag02 path_beg /tag-02
  use_backend be2 if url_tag02

HAProxy構成ガイドのセクション7にはACLの詳細が記載されていますが、ACLの処理方法を知るにuse_backendは、ガイドのセクション4に隠されている魔法の呪文を知っておく必要があります。


1
宣言されたACLスタイルは一般的に読みやすく、再利用可能ですが、必要に応じて、use_backendディレクティブ自体にACL宣言を含めることができますuse_backend be2 if { path_beg /tag-02 }
ウォンブル

0

上記の答えに対するより良い例を提供するために、以下に構成例を示します。

frontend https-in
   bind *:443 ssl crt /etc/ssl/server.pem
   mode http
   redirect scheme https if !{ ssl_fc }

   acl uri_help path_beg /help
   use_backend help if uri_help

backend help
    balance     roundrobin
    server      help yourbackendserver.com check
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.