HAProxyの詳細なACL



Detailed Acls Haproxy



コンパイル元:

ACLとパターン抽出の使用



ドキュメントバージョン:HAProxyバージョン1.4.27

目次:



  • 整数一致
  • 文字列照合
  • レギュラーマッチ
  • IPv4アドレスマッチング
  • 利用可能なテストエリア
    • 4層以下のマッチング
    • 4層マッチング
    • 7層マッチング
    • 事前定義されたACL
    • 条件と組み合わせてACLを使用する
    • パターン抽出
  • 動的および静的分離の例(元のテキストにはない、マルココースによって与えられた例)

ACLを使用すると、要求と応答の任意の部分に基づいてサービスコンテンツを切り替えることができます。一般的な原則は次のとおりです。

  • テスト基準の定義
  • リクエストの拒否やバックエンドの選択など、テスト結果に基づいて特定のアクションを実行します

aclキーワードは、新しいテスト基準を定義するため、または既存のテスト基準を再定義するために使用されます。

acl [flags] [operator] ...


要求または応答の一部をテストすることを指定します



【フラグ】:
テストを調整する

-i: Subsequent patterns of this flag ignore case when pattern matching, the previous patterns are not affected E.g: acl valid-ua hdr(user-agent) -f exact-ua.lst -i -f generic-ua.lst test Pattern in exact-ua.lst is case sensitive Pattern in generic-ua.lst ignores case Test string ignores case -f: load pattern from file Multiple files can be specified with multiple -f options. If a pattern is parsed incorrectly, version 1.4 cannot accurately locate the wrong pattern, only the ACL can be known. There is a parsing error. The patterns in the file may be loaded into the binary tree, so the lookup is fast. --: Forced termination of flags. When a string looks like a flags, you can use -- to explicitly terminate flags.

[オペレーター]:

Some guidelines support the use of operators

Specify the types supported by the test criteria, multiple separated by spaces The supported types include: - integer, integer range - string - regular expression - IP address, network address

ACL名では、大文字、小文字、数字、-(中心線)、_(アンダースコア)、.のみを使用できることに注意してください。 (ドット)、および:(コロン)。さらに、ACL名は大文字と小文字を区別します。 My_aclとMy_Aclは2つの異なるACLです。

ACLの数に制限はなく、ACLは少量のメモリしか使用しません。

7.1整数マッチング


整数マッチングルール:
1.範囲の一致を許可する
例えば:
1024:65535
1024:
0:1023
:1023

2. Support for testing the version number: 1.2 3. Allow comparison operators to be used, similar to bash: Eq: equal to Ge: greater than or equal to Gt: greater than Le: less than or equal to Less than: less than Example: Acl negative-length hdr_val(content-length) lt 0 (content length is less than 0) Acl sslv3 req_ssl_ver 3:3.1 (SSL version is between 3.0~3.1) 4. Match only positive numbers

7.2文字列照合


これは、正確な文字列照合を指します。次のようないくつかのルールがあります。

  1. スペースなどの特殊文字は、エスケープして通常の文字に変換できます

  2. -i文字列、大文字と小文字が区別されないことを意味します

  3. -i、-、などの特殊な文字列に一致します

    方法1:文字列の前に-を追加すると、フラグが終了します

    -- -i -- --

    方法2:特別な文字列を2番目の位置に配置します

    str1 -i str1 --

7.3通常のマッチング


基本的なルールは上記と同じです

7.4IPv4アドレスマッチング


IPアドレスを一致させます:
192.168.0.110
www.guli.com (ホスト名の使用のサポートですが、構成のため、読み取りとデバッグが困難になるため、これはお勧めしません)
ホスト名を使用する場合は、/ etc / hostsに対応する解決エントリがあり、DNS解決に依存しないことを確認してください。

ネットワークに一致する:
192.168.0.0/24

7.5利用可能なテストエリア


7.5.14層以下のマッチング


これはテスト領域の最初の部分であり、要求または応答の内容の分析を必要としません。これには、TCP / IPアドレスとポート、およびトラフィックに依存しないいくつかの内部情報が含まれています。

always_false

これは決して一致しません。すべての値とフラグは無視されます。構成を調整するときに使用できます。

常に真実

これは常に一致します。すべての値とフラグは無視されます。構成を調整するときに使用できます。

avg_queue
avg_queue(バックエンド)

指定されたバックエンドの待機キューの長さの平均数、または指定された範囲内にある場合はture。

戻り値は、バックエンドの保留中の接続の総数/このバックエンドアクティビティのバックエンドサーバーの総数です。

この値に基づいて、新しい接続が処理されるまでに待機する必要がある時間を大まかに決定できます。

主な使用シナリオは、ダウングレードされたサービスしか取得できないと新しいユーザーが判断し、ユーザーに申し訳ないページを返す場合です。

バックエンドにアクティブなサーバーがない場合、キューx2を待機している接続の数を測定値として使用することに注意してください。サーバーが迅速に復旧できることを期待しているため、これは公正な予測です。ただし、この場合、より適切なアプローチは、トラフィックを別のバックエンドに転送することです。

be_conn
be_conn(バックエンド)

指定されたバックエンドの接続数を返します(おそらく評価中の接続を含む)。指定された範囲内にある場合、trueを返します。

バックエンドが指定されていない場合は、現在のバックエンドが使用されていることを意味します。

テスト対象のバックエンドの接続数がいっぱいで、そのトラフィックが別のバックエンドに転送されるシナリオで使用できます。

be_id

バックエンドのIDを返します。フロントエンドで使用して、呼び出されたバックエンドを検出できます。

be_sess_rate
be_sess_rate(backend)

'セッション作成率'を返します:新しいセッション/秒。指定された範囲内にある場合はtrue。

使用するシーン:

1. When this value is too high, its traffic can be forwarded to other backends. 2. Limit 'abuse of service', such as: prevent sucking of an online dictionary

例:

# Redirect to an error page if the dictionary is requested too often backend dynamic mode http acl being_scanned be_sess_rate gt 100 redirect location /denied.html if being_scanned When the Session Creation Rate is higher than 100 session/s, the request is redirected to a denied page.

connslots
connslots(バックエンド)

Connslots =バックエンドサーバーへの残りの接続数+バックエンドの待機キュー内の残りの接続数。指定された範囲内にある場合はtrue。

簡単に言えば、バックエンドが現在受信できる新しい接続の数を測定することです。この値に基づいて、より適切な負荷分散を行うことができます。通常、fe_conn(フロントエンドが現在受信している接続の数)と一緒に判断されます。

現在のクライアントが接続されているローカルIPv4アドレスを返します。それはに使用することができます
一部の代替アドレスについては、別のバックエンドに切り替えてください。

dst_conn

ソケットで確立された接続の数を返します。現在受信している接続数が最大容量に達した場合は、ハードブロックする前に申し訳ないページを返すか、指定したバックエンドを使用して新しいリクエストを受信するために使用できます。

これを使用して、リスニングアドレスごとに異なる制限を設定できます。

dst_port

現在のクライアントが接続されているローカルポートアドレスを返します。切り替えに使用できます
いくつかの代替ポートの別のバックエンドに。

fe_conn
fe_conn(フロントエンド)

フロントエンドで確立された接続の数を返します(評価されている接続を含む可能性があります)。指定された範囲内にある場合、trueを返します。

フロントエンドが指定されていない場合は、現在のフロントエンドを使用します。

関連するバックエンドによって受信された接続の数が最大容量に達したと見なされる場合、ハードブロッキングの前に申し訳ないページを返すため、または指定されたバックエンドを使用して新しい要求を受信するために使用できます。

fe_id

フロントエンドのIDを返します。バックエンドで使用して、呼び出されるフロントエンドを判別できます。

fe_sess_rate
fe_sess_rate(フロントエンド)

フロントエンドの「新しいセッションレート」を返します。単位は次のとおりです。新しいセッション/秒。指定された範囲内にある場合はtrueを返します。

一般的な使用シナリオ:新しい接続の速度を許容範囲に制限します。そもそもサービスの悪用を防ぎます。 ddos攻撃などを防止します。

レイヤ4ACLと組み合わせると、新しいセッションレートが妥当な範囲内に収まるのを待つ間、クライアントに少し待つように強制できます。

例:

# This frontend limits incoming mails to 10/s with a max of 100 # concurrent connections. We accept any connection below 10/s, and # force excess clients to wait for 100 ms. Since clients are limited to # 100 max, there cannot be more than 10 incoming mails per second. frontend mail bind :25 mode tcp maxconn 100 acl too_fast fe_sess_rate ge 10 tcp-request inspect-delay 100ms tcp-request content accept if ! too_fast tcp-request content accept if WAIT_END Limit incoming mail rate to 10/s The maximum number of concurrent connections is 100 The new session rate is limited to: <10/s. If this limit is exceeded, the client is forced to wait 100ms. Because the number of concurrent clients is limited to 100, the new mail rate cannot be greater than 10/s

nbsrv
nbsrv(バックエンド)

現在のバックエンドまたは指定されたバックエンドで使用可能なサーバーの数を返します。使用可能なサーバーの数が少なすぎる場合は、別のバックエンドに切り替えることができます。

通常、モニターの障害と組み合わせて使用​​されます。

キュー
キュー(バックエンド)

現在のバックエンドまたは指定されたバックエンドの待機キュー内の接続数を返します。

キューの長さがアラート値を超える場合は、通常、アクセスピークに遭遇したか、多数のサーバーに障害が発生したことを意味します。考えられる対策の1つは、新しいユーザーを拒否し、古い接続を維持することです。

so_id

ソケットのIDを返します。

フロントエンドに使用され、複数のバインドキーワードがある場合、つまり複数のアドレスがリッスンされている場合に役立ちます。

src

クライアントのIPv4アドレスを返します。

一般に、統計データリソースなどの特定のリソースへのアクセスを制限するために使用されます。

src_port

クライアントのTCP送信元ポートを返します。あまり役に立たない。

srv_id

サーバーのIDを返します。

フロントエンドとバックエンドで利用可能

srv_is_up()
srv_is_up(/)

バックエンドまたは現在のバックエンドで指定されたサーバーが実行されている場合はtrueを返し、それ以外の場合はfalseを返します。

パラメータは受け入れられません。

ヘルスチェックで外部サイトの可用性が報告されたら、特定のアクションを実行します。

7.5.24層マッチング


キャッシュで見つかったデータに基づく2番目の部分のテスト領域は、分析プロセス中に変更される可能性があります。

データをキャッシュする必要があります。これは通常、「TCP要求のコンテンツチェック」に使用されます。

tcp-request content accept [if ] Determine whether to accept or reject a connection based on whether the test condition is met.

req_len

要求バッファー内のデータの長さが指定された範囲と一致する場合、trueを返します。

バッファが変更されている場合、falseは返されません。セッションの開始時に、req_len eq0は間違いなく一致します。

req_len geが0より大きい整数の場合、データがバッファに入るのを待ち、haproxyがデータが入っていないと判断した場合はfalseを返します。

「TCPリクエストコンテンツチェック」に使用

req_proto_http

リクエストバッファ内のデータがHTTPのように見えるか、HTTPとして正しく解析できる場合は、trueを返します。

TCP要求コンテンツ検査のルールを使用して、HTTPトラフィックとHTTPSトラフィックを異なるポートアドレスにスケジュールできます。

req_rdp_cookie
req_rdp_cookie(name)

リモートデスクトッププロトコル関連

req_rdp_cookie_cnt
req_rdp_cookie_cnt(name)

リモートデスクトッププロトコル関連

req_ssl_ver

リクエストキャッシュ内のデータがSSLプロトコルデータのように見え、プロトコルバージョンが指定された範囲内にある場合、trueを返します。

SSLv2helloメッセージとSSLv3メッセージのサポート。

このテストは、厳密に制限され、簡単にだまされないようにすることを目的としています。

特に、で発表された数のバイトを待機します
このヘッダーが有効に見える場合のメッセージヘッダー(バッファーサイズにバインドされています)

TLSv1プロトコルはSSLバージョン3.1と呼ばれることに注意してください。

「TCPリクエストコンテンツチェック」に使用

wait_end

分析期間が終了するのを待って、trueを返します。

これは通常、誤った結論を早く返すことを避けるために、コンテンツ分析と組み合わせて使用​​されます。

また、特定の指定されたIPアドレスを拒否するなど、特定のアクションを遅らせるために使用することもできます。

ルールチェックを停止するか、すぐにtrueを返すため、ルールの最後にこのACLを使用することをお勧めします。

デフォルトのACL'WAIT_END 'は常に使用可能であり、事前宣言を必要としないことに注意してください。

このテストは、「TCP要求コンテンツチェック」に使用されます

例:

# delay every incoming request by 2 seconds tcp-request inspect-delay 2s tcp-request content accept if WAIT_END # don't immediately tell bad guys they are rejected tcp-request inspect-delay 10s acl goodguys src 10.0.0.0/24 acl badguys src 10.0.1.0/24 tcp-request content accept if goodguys tcp-request content reject if badguys WAIT_END tcp-request content reject

7.5.37層マッチング


3番目の部分のテスト領域は7層のテストです。 HTTPリクエストの完全な解析を実行する必要があります。

要求と応答の両方にインデックスが付けられているため、4層マッチングよりも多くのCPUリソースが必要ですが、それほど多くはありません。

hdr
hdr(ヘッダー)

Hdr *はすべてのヘッダーに一致し、hdr *(header)は指定されたヘッダーに一致し、括弧内にスペースがないことに注意してください。

ヘッダーを指定する場合、その名前では大文字と小文字は区別されません

ヘッダーマッチングはRFC2616に準拠しており、コンマで区切られたすべての値を個別のヘッダーとして扱います。

応答ヘッダーには、shdr()を使用します

たとえば、「connection:close」が設定されているかどうかを確認します。

hdr(Connection) -i close

hdr_beg
hdr_beg(header)

ヘッダーの値は文字列で始まり、trueを返します

応答ヘッダーには、shdr_beg()を使用します

hdr_cnt
hdr_cnt(ヘッダー)

指定されたヘッダーが指定された範囲内にある場合、または指定された値と一致する場合にtrueを返します

行ヘッダーステートメントに複数の値が含まれている場合、複数回カウントされます

指定されたヘッダーが存在し、悪用されているかどうかを確認するために使用されます

複数の指定されたヘッダーを持つリクエストを拒否することにより、リクエストの密輸攻撃をブロックします

応答ヘッダーには、shdr_cnt()を使用します

hdr_dir
hdr_dir(header)

ファイル名またはディレクトリ名の照合に使用されます。ヘッダーに/区切りの文字列が含まれている場合は、trueを返します。

リファラーと組み合わせて使用​​できます

応答ヘッダーには、shdr_dir()を使用します

hdr_dom
hdr_dom(header)

ドメイン名の照合に使用され、ヘッダーに。で区切られた文字列が含まれている場合にホストヘッダーで使用でき、trueを返します

応答ヘッダーには、shdr_dom()を使用します

hdr_end
hdr_end(header)

ヘッダーの値が文字列で終わる場合はtrueを返します

応答ヘッダーには、shdr_end()を使用します

hdr_ip
hdr_ip(ヘッダー)

ヘッダーの値に一致する値が含まれている場合はtrueを返します

通常、X-Forwarded-ForまたはX-Client-IPで使用されます

応答ヘッダーには、shdr_ip()を使用します

hdr_len
hdr_len()

少なくとも1つのヘッダーの長さが指定された値または範囲と一致する場合、trueを返します

応答ヘッダーには、shdr_len()を使用します

hdr_reg
hdr_reg(ヘッダー)

いつでも使用できる正規表現に一致するヘッダーがある場合はtrueを返します

通常の試合は他の試合よりも遅いことに注意してください

応答ヘッダーには、shdr_reg()を使用します

hdr_sub
hdr_sub(ヘッダー)

文字列の1つを含むヘッダーがある場合はtrueを返します

応答ヘッダーには、shdr_sub()を使用します

hdr_val
hdr_val(header)

指定された値または範囲に一致するヘッダー開始番号を使用して、コンテンツの長さを制限し、妥当な長さの要求のみを受け入れることができます。

応答ヘッダーには、shdr_val()を使用します

http_auth(userlist)
http_auth_group(userlist)[] *

クライアントから受信した認証情報がユーザーリストに記録されているものと一致する場合はtrueを返します

現在、http基本認証のみをサポートしています

http_first_req

要求された要求が接続する最初の要求である場合はtrueを返します

方法

HTTPリクエストのチェックに使用されるメソッド。一致する場合はtrue

リクエストのパス部分(/で始まり?までの部分)、文字列と等しい場合はtrue

たとえば、ファイルの照合に使用できます:/favicon.ico

path_beg

パスが文字列で始まる場合はtrueを返し、一部のディレクトリ名を代替バックエンドに送信するために使用できます

path_dir

パスに/で区切られた文字列が含まれている場合はtrueを返し、ファイル名またはディレクトリ名との照合に使用できます

path_dom

パスに。で区切られた文字列が含まれている場合にtrueを返します。ドメイン名の照合に使用できます

path_end

パスが文字列で終わる場合はtrueを返しますファイル拡張子の制御に使用できます

path_len

パスの長さが指定された値または範囲と一致する場合にtrueを返し、不正な要求を検出するために使用できます

path_reg

パスが正規表現に一致する場合にtrueを返します

path_sub

パスに文字列が含まれている場合にtrueを返します。これを使用して、パス内の指定されたパターン( '../'など)を検出できます。

req_ver

1.0などのHTTPリクエストのチェックに使用されるバージョン

状態

302などのHTTP応答のチェックに使用されるステータスコード

ステータスコードに基づいて特定のアクションを実行できます。たとえば、応答のステータスコードが3xxでない場合は、Locationヘッダーを削除します

URL

実際に使用するのは*に一致するリクエストのURL全体に適用され、事前定義されたACLがすでに存在します:HTTP_URL_STAR

url_beg

URLが文字列で始まる場合はtrueを返し、/またはプロトコルのスキームで始まるかどうかを確認するために使用できます

url_dir

URLに、ファイル名とディレクトリ名の照合に使用される/で区切られた文字列が含まれている場合はtrueを返します

url_dom

URLに。で区切られた文字列が含まれている場合はtrueを返します。ドメイン名の照合に使用

url_end

URLがめったに使用されない文字列で終わる場合にtrueを返します

url_ip

HTTPリクエストの絶対URIで指定されたIPアドレスを確認するために使用されます。IPアドレスに基づいてリソースへのアクセスを制限するために使用できます。

http_proxyと連携して機能します

url_len

URLの長さが指定された値と一致するか、範囲が不正なリクエストの検出に使用できる場合にtrueを返します

url_port

HTTPリクエストの絶対URIで指定されたPORTアドレスを確認するために使用されます。PORTアドレスに基づいてリソースアクセス制限を行うために使用できます。

http_proxyと連携して機能します

リクエストでポートが指定されていない場合、ポートは80であることに注意してください

url_reg

URLが正規表現と一致する場合にtrueを返します

url_sub

URLに文字列が含まれている場合、trueを返します。クエリ文字列の一部のパターンを確認するために使用できます。

7.5.4事前定義されたACL


事前定義されたACLは宣言する必要がなく、直接使用できます。それらの名前はすべて大文字です。

ACL name Equivalent to Usage FALSE always_false never match HTTP req_proto_http match if protocol is valid HTTP HTTP_1.0 req_ver 1.0 match HTTP version 1.0 HTTP_1.1 req_ver 1.1 match HTTP version 1.1 HTTP_CONTENT hdr_val(content-length) gt 0 match an existing content-length HTTP_URL_ABS url_reg ^[^/:]*:// match absolute URL with scheme HTTP_URL_SLASH url_beg / match URL beginning with '/' HTTP_URL_STAR url * match URL equal to '*' LOCALHOST src 127.0.0.1/8 match connection from local host METH_CONNECT method CONNECT match HTTP CONNECT method METH_GET method GET HEAD match HTTP GET or HEAD method METH_HEAD method HEAD match HTTP HEAD method METH_OPTIONS method OPTIONS match HTTP OPTIONS method METH_POST method POST match HTTP POST method METH_TRACE method TRACE match HTTP TRACE method RDP_COOKIE req_rdp_cookie_cnt gt 0 match presence of an RDP cookie REQ_CONTENT req_len gt 0 match data in the request buffer TRUE always_true always match WAIT_END wait_end wait for end of content analysis

7.5.5ACLを使用した条件の構築


一部のアクションは、有効な条件が満たされた場合にのみ実行できます。条件はACLの論理的な組み合わせです。

使用可能な論理演算子は3つあります。

  • AND(暗黙的)
  • OR(明示的に、orまたは||演算子を使用します)
  • ネガション(!)

条件の構成:

[!]acl1 [!]acl2 ... [!]acln { or [!]acl1 [!]acl2 ... [!]acln } ...

行動:

actions if/unless conditons

たとえば、条件付きHTTPリクエストをブロックする条件を作成し、次の条件のいずれかが満たされた場合にリクエストを拒否します。

Not an OPTIONS request, but the URL is * Is a POST request, but no content-length header Is a GET or HEAD request, but content-length > 0 Request method, which is a request in addition to GET/HEAD/POST/OPTIONS

ルールは次のとおりです。

acl missing_cl hdr_cnt(Content-length) eq 0 block if HTTP_URL_STAR !METH_OPTIONS || METH_POST missing_cl block if METH_GET HTTP_CONTENT block unless METH_GET or METH_POST or METH_OPTIONS

例2。
/ static、/ images、/ img、/ cssで始まる、または.gif、.png、.jpg、.css、.jsで終わるurl_staticテストを作成しますTrue
host_wwwテストを確立します。要求されたホストヘッダーフィールドがwwwで始まる場合、大文字と小文字を区別せずにtrueを返します。
host_staticテストを確立します。要求されたホストヘッダーフィールドがimgのいずれかで始まる場合。ビデオ。ダウンロード。 ftp。、大文字と小文字を区別せずにtrueを返します

静的バックエンドに転送されたhost_staticテスト、またはhost_www ANDurl_staticテストを満たすためのリクエスト
host_wwwテストの要求のみを満たし、wwwバックエンドを転送します

acl url_static path_beg /static /images /img /css acl url_static path_end .gif .png .jpg .css .js acl host_www hdr_beg(host) -i www acl host_static hdr_beg(host) -i img. video. download. ftp. # now use backend 'static' for all static-only hosts, and for static urls # of host 'www'. Use backend 'www' for the rest. use_backend static if host_static or host_www url_static use_backend www if host_www

HAProxyは、匿名ACLの使用をサポートしています。事前の宣言は必要ありません。これらは、{ACL}で囲む必要があります。たとえば、スペースに注意してください。

The following rule : acl missing_cl hdr_cnt(Content-length) eq 0 block if METH_POST missing_cl Can also be written that way : block if METH_POST { hdr_cnt(Content-length) eq 0 }

一般に、匿名ACLはエラーが発生しやすいため、お勧めしません。

src IPアドレスの照合など、単純なACLの場合のみ、匿名性を使用すると読みやすくなります。

With named ACLs : acl site_dead nbsrv(dynamic) lt 2 acl site_dead nbsrv(static) lt 2 monitor fail if site_dead With anonymous ACLs : monitor fail if { nbsrv(dynamic) lt 2 } || { nbsrv(static) lt 2 }

7.5.6パターン抽出


粘着性機能は、リクエストのパターン抽出に依存し、
応答。場合によっては、保存する前にデータを最初に変換する必要があります。
たとえば、ASCIIからIPに、または大文字から小文字に変換されます。

データの抽出と変換のこれらすべての操作は、次のように定義されます。
「パターン抽出ルール」。パターンルールは常に同じ形式です。それ
単一のパターンフェッチワードで始まり、その後に次のリストが続く可能性があります
括弧内の引数、次にオプションの変換リスト。なので
可能な限り、パターンフェッチ関数はそれらと同じ名前を使用します
ACLで使用される同等のもの。

現在サポートされているパターンフェッチ関数のリストは次のとおりです。

srcこれは、セッションのクライアントの送信元IPv4アドレスです。
タイプIPであり、そのようなテーブルでのみ機能します。

dstこれは、上のセッションの宛先IPv4アドレスです。
クライアント側。これは、クライアントが接続しているアドレスです。
透過モードで実行しているときに便利です。の
IPと入力し、そのようなテーブルでのみ機能します。

dst_portこれは、クライアント上のセッションの宛先TCPポートです。
サイド。クライアントが接続しているポートです。これは
透過モードで実行しているとき、または動的を割り当てるときに使用されます
アプリケーションセッション全体で一部のクライアントにポートします。の
整数型であり、そのようなテーブルでのみ機能します。

hdr(name)これは、HTTPで最後に出現するヘッダーを抽出します
リクエストしてIPアドレスに変換します。このIPアドレスは
その後、テーブルを照合するために使用されます。典型的な使用法は
x-forwarded-forヘッダー。

現在利用可能な変換のリストは次のとおりです。

lower文字列パターンを小文字に変換します。これは配置することができます
文字列パターンフェッチ関数の後または変換後
文字列型を返す関数。結果は文字列型です。

upper文字列パターンを大文字に変換します。これは配置することができます
文字列パターンフェッチ関数の後または変換後
文字列型を返す関数。結果は文字列型です。

ipmask(mask)IPv4アドレスにマスクを適用し、その結果をルックアップに使用します
とストレージ。これを使用して、内のすべてのホストを作成できます。
同じテーブルエントリを共有するための特定のマスク
同じサーバー。マスクは点線で渡すことができます(例:
255.255.255.0)またはCIDR形式(例:24)。

動的分離の例


Dynamic and static separation example: global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 30000 listen stats mode http bind 0.0.0.0:1080 stats enable stats hide-version stats uri /haproxyadmin?stats stats realm Haproxy Statistics stats auth admin:admin stats admin if TRUE frontend http-in bind *:80 mode http log global option httpclose option logasap option dontlognull capture request header Host len 20 capture request header Referer len 60 acl url_static path_beg -i /static /images /javascript /stylesheets acl url_static path_end -i .jpg .jpeg .gif .png .css .js use_backend static_servers if url_static default_backend dynamic_servers backend static_servers balance roundrobin server imgsrv1 172.16.200.7:80 check maxconn 6000 server imgsrv2 172.16.200.8:80 check maxconn 6000 backend dynamic_servers cookie srv insert nocache balance roundrobin server websrv1 172.16.200.7:80 check maxconn 1000 cookie websrv1 server websrv2 172.16.200.8:80 check maxconn 1000 cookie websrv2 server websrv3 172.16.200.9:80 check maxconn 1000 cookie websrv3