コンテンツ書き換えプロファイルを HTTP(S) 仮想サービスに関連付けることで、サーバ応答の本文内で HTML コンテンツを変更できます。コンテンツ書き換えポリシーの作成と仮想サービスへの接続には、VMware NSX Advanced Load Balancer CLI によってもも API を使用してもよいです。

コンテンツ書き換えプロファイルは、サーバ応答の本文内で検索する 1 つ以上の文字列を指定します。プロファイルは、クライアント要求もサーバ ヘッダーも変更しません。ヘッダーは、DataScript やポリシーなどの他の機能を使用して変更できます。応答ヘッダーの書き換えの詳細については、「仮想サービス ポリシー」の「HTTP 応答ポリシー」を参照してください。

VMware NSX Advanced Load Balancer でサーバ応答を変更する唯一の方法は、コンテンツ書き換えプロファイルです。コンテンツ書き換えプロファイルは、仮想サービスのサブフィールドとして構成できます。プロファイルには、応答本文内の文字列に一致して置き換えるキーと値のペアのリストが含まれています。Content-rewrite を使用すると、リテラル文字列または次のいずれかの変数を構成できます。

  • avi.http.set_reqvar() を使用して DataScript で定義されるもの。

  • 一般的な仮想サービスや HTTP 要求パラメータ($vs_name$vs_ip$http_host$req_id など)に対して内部的に定義されるもの。

検索について

  • コンテンツの書き換えは計算コストが高くなる可能性があります。そのため、検索の置き換えを変更する必要がある特定のコンテンツ タイプに制限することをお勧めします。Rewritable_content_ref 引数は、その特定のコンテンツ タイプのリストを含める文字列グループを指定するに使用されます。デフォルトでは、VMware NSX Advanced Load Balancer の構成に System-Rewritable-Content-Types 文字列グループを含めます。内容は、text/html や text/plain など一般的なテキストベースの HTML MIME タイプのリストです。これにより、検索/置換操作を実行するときに、イメージなどの base64 でエンコードされたコンテンツが検査されなくなります。

  • 検索は、対象となるサーバ応答の本文全体にわたって実行され、長さの制限はありません。

  • 1 つの HTTP 応答本文内の複数の場所に検索文字列が見つかった場合は、それらのすべての場所で置き換えられます。

  • 1 つのコンテンツ書き換えプロファイルで複数の検索/置換ペアを指定できます。これらはすべてアクティブかつ独立して適用されます。コンテンツの置き換えは再帰的ではありません。たとえば、「a」を「b」に検索置換し、「b」を「c」に置き換える 2 つ目の search-replace を持つプロファイルについて考えます。サーバ応答内の「b」の既存のインスタンスのみが「c」に置き換えられます。「b」に置き換えられた「a」のインスタンスは再帰的にチェックされず、「c」に置き換えられます。したがって、両方のペアが適用されると、サーバ応答本文 abcabccb に書き換えられます。

  • 検索では大文字/小文字は区別されません。

置換文字列タイプ

見つかった文字列は、新しい文字列を指定するために使用される 3 つの方法のいずれかで新しい文字列に置き換えることができます。

  1. リテラル文字列は、応答本文で見つかったデータを置き換える際に使用される基本的なテキスト文字列です。

  2. 識別された HTTP ヘッダー内の文字列は、置換文字列に組み込むことができます。ヘッダー名を指定して、現在の値を置換文字列として使用します。ヘッダーが存在しない場合、検索文字列は null データに置き換えられ、事実上応答から検索文字列が削除されます。[HTTP ヘッダー] を使用する場合は、[タイプ] を HTTP_HEADER_VAR に設定してから、使用するヘッダーの名前を入力します。

  3. DataScript を使用して置換文字列を生成できます。新しい DataScript を作成して仮想サービスに接続します。ここで新しい値を指定するには、avi.http.set_reqvar() 関数を使用することになります。たとえば、avi.http.set_reqvar(“key1”, “value1”) という命令では、key1 という名前の変数が作成され、value1 に設定されます。[コンテンツ書き換えプロファイル] で、タイプを DATASCRIPT_VAR に設定し、変数を key1 に設定します。各 HTTP 要求の DataScript で、DataScript 変数を key1 と一意に設定することで、スクリプト ロジックに基づいて value1、value2 といった新しい値を割り当てることができます。仮想サービスに DataScript が割り当てられていない場合、変数が別の名前に設定されている場合、または変数が設定されていない場合、コンテンツ書き換えプロファイルは検索された文字列を null データに置き換え、事実上検索文字列を応答から削除します。

CLI インターフェイス

この後に示すターミナルで着目されたいのは、VS3 という名前の仮想サービス オブジェクト内にある次の操作フィールドです。

  • content_rewrite.rewritable_content_ref

  • content_rewrite.request_rewrite_enabled

  • content_rewrite.response_rewrite_enabled

  • content_rewrite.rsp_match_replace_pair.match_string

  • content_rewrite.rsp_match_replace_pair.replacement_string.type

  • content_rewrite.rsp_match_replace_pair.replacement_string.val

下のターミナルに [TAB][TAB] を挿入して、ユーザーの 2 つのタブの入力を示しました。これにより、シェルでコマンドライン構文が表示されます。

[admin:10-160-0-3]: > configure virtualservice VS3
Updating an existing object. Currently, the object is:
+----------------------------------+-----------------------------------------------------+
| Field                            | Value                                               |
+----------------------------------+-----------------------------------------------------+
| uuid                             | virtualservice-d49aff8a-2846-457b-98c7-657c18675b0e |
| name                             | VS3                                                 |
| enabled                          | True                                                |
| services[1]                      |                                                     |
|   port                           | 80                                                  |
|   enable_ssl                     | False                                               |
|   port_range_end                 | 80                                                  |
| application_profile_ref          | System-HTTP                                         |
| network_profile_ref              | System-TCP-Proxy                                    |
| pool_ref                         | VS3-pool                                            |
| se_group_ref                     | Default-Group                                       |
| network_security_policy_ref      | vs-VS3-Default-Cloud-ns                             |
| analytics_policy                 |                                                     |
|   full_client_logs               |                                                     |
|     enabled                      | True                                                |
|     duration                     | 30 min                                              |
|     all_headers                  | False                                               |
|   client_insights                | ACTIVE                                              |
|   metrics_realtime_update        |       |                                                     |
|     enabled                      | True                                                |
|     duration                     | 30 min                                              |
| vrf_context_ref                  | global                                              |
| enable_autogw                    | True                                                |
| analytics_profile_ref            | System-Analytics-Profile                            |
| weight                           | 1                                                   |
| delay_fairness                   | False                                               |
| max_cps_per_client               | 0                                                   |
| limit_doser                      | False                                               |
| type                             | VS_TYPE_NORMAL                                      |
| cloud_type                       | CLOUD_NONE                                          |
| use_bridge_ip_as_vip             | False                                               |
| flow_dist                        | LOAD_AWARE                                          |
| ign_pool_net_reach               | False                                               |
| ssl_sess_cache_avg_size          | 1024                                                |
| remove_listening_port_on_vs_down | False                                               |
| tenant_ref                       | admin                                               |
| cloud_ref                        | Default-Cloud                                       |
| east_west_placement              | False                                               |
| scaleout_ecmp                    | False                                               |
| active_standby_se_tag            | ACTIVE_STANDBY_SE_1                                 |
| flow_label_type                  | NO_LABEL                                            |
| content_rewrite                  |                                                     |
|   rewritable_content_ref         | System-Rewritable-Content-Types                     |
|   request_rewrite_enabled        | False                                               |
|   response_rewrite_enabled       | False                                               |
| sideband_profile                 |                                                     |
|   sideband_max_request_body_size | 1024 bytes                                          |
| vip[1]                           |                                                     |
|   vip_id                         | 1                                                   |
|   ip_address                     | 10.160.33.200                                       |
|   enabled                        | True                                                |
|   auto_allocate_ip               | False                                               |
|   auto_allocate_floating_ip      | False                                               |
|   avi_allocated_vip              | False                                               |
|   avi_allocated_fip              | False                                               |
| vsvip_ref                        | vsvip-VS3-Default-Cloud                             |
+----------------------------------+-----------------------------------------------------+
[admin:10-160-0-3]: virtualservice> content_rewrite
[admin:10-160-0-3]: virtualservice:content_rewrite> where
Tenant: admin
+--------------------------+---------------------------------+
| Field                    | Value                           |
+--------------------------+---------------------------------+
| rewritable_content_ref   | System-Rewritable-Content-Types |
| request_rewrite_enabled  | False                           |
| response_rewrite_enabled | False                           |
+--------------------------+---------------------------------+
[admin:10-160-0-3]: virtualservice:content_rewrite> response_rewrite_enabled [TAB][TAB]
request_rewrite_enabled   Enable rewrite on request body.
rewritable_content_ref    Rewrite only content types listed in this string group. Content types not present in this list are not rewritten.
[admin:10-160-0-3]: virtualservice:content_rewrite> response_rewrite_enabled
Overwriting the previously entered value for response_rewrite_enabled
[admin:10-160-0-3]: virtualservice:content_rewrite> where
Tenant: admin
+--------------------------+---------------------------------+
| Field                    | Value                           |
+--------------------------+---------------------------------+
| rewritable_content_ref   | System-Rewritable-Content-Types |
| request_rewrite_enabled  | False                           |
| response_rewrite_enabled | True                            |
+--------------------------+---------------------------------+
[admin:10-160-0-3]: virtualservice:content_rewrite> rsp_match_replace_pair
New object being created
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair> where
Tenant: admin
No result.

[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair> match_string ABC
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair> replacement_string
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair:replacement_string> type [TAB][TAB]
datascript_var    The variable exposed in datascript to be used as the replacement string in content rewrite.
http_header_var   The HTTP header to be used as the replacement string in content rewrite.
literal_string    The literal string to be used as the replacement string in content rewrite.
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair:replacement_string> type literal_string
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair:replacement_string> val XYZ
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair:replacement_string> save
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair> where
Tenant: admin
+--------------------+----------------+
| Field              | Value          |
+--------------------+----------------+
| match_string       | ABC            |
| replacement_string |                |
|   type             | LITERAL_STRING |
|   val              | XYZ            |
+--------------------+----------------+
[admin:10-160-0-3]: virtualservice:content_rewrite:rsp_match_replace_pair> save
[admin:10-160-0-3]: virtualservice:content_rewrite> save
[admin:10-160-0-3]: virtualservice> save
+----------------------------------+------------------------------------------------------+
| Field                            | Value                                                |
+----------------------------------+------------------------------------------------------+
| uuid                             | virtualservice-d49aff8a-2846-457b-98c7-657c18675b0e  |
| name                             | VS3                                                  |
| enabled                          | True                                                 |
| services[1]                      |                                                      |
| port                             | 80                                                   |
| enable_ssl                       | False                                                |
| port_range_end                   | 80                                                   |
| application_profile_ref          | System-HTTP                                          |
| network_profile_ref              | System-TCP-Proxy                                     |
| pool_ref                         | VS3-pool                                             |
| se_group_ref                     | Default-Group                                        |
| network_security_policy_ref      | vs-VS3-Default-Cloud-ns                              |
| analytics_policy                 |                                                      |
| full_client_logs                 |                                                      |
| enabled                          | True                                                 |
| duration                         | 30 min                                               |
| all_headers                      | False                                                |
| client_insights                  | ACTIVE                                               |
| metrics_realtime_update          |                                                      |
| enabled                          | True                                                 |
| duration                         | 30 min                                               |
| vrf_context_ref                  | global                                               |
| enable_autogw                    | True                                                 |
| analytics_profile_ref            | System-Analytics-Profile                             |
| weight                           | 1                                                    |
| delay_fairness                   | False                                                |
| max_cps_per_client               | 0                                                    |
| limit_doser                      | False                                                |
| type                             | VS_TYPE_NORMAL                                       |
| cloud_type                       | CLOUD_NONE                                           |
| use_bridge_ip_as_vip             | False                                                |
| flow_dist                        | LOAD_AWARE                                           |
| ign_pool_net_reach               | False                                                |
| ssl_sess_cache_avg_size          | 1024                                                 |
| remove_listening_port_on_vs_down | False                                                |
| tenant_ref                       | admin                                                |
| cloud_ref                        | Default-Cloud                                        |
| east_west_placement              | False                                                |
| scaleout_ecmp                    | False                                                |
| active_standby_se_tag            | ACTIVE_STANDBY_SE_1                                  |
| flow_label_type                  | NO_LABEL                                             |
| content_rewrite                  |                                                      |
|rewritable_content_ref            | System-Rewritable-Content-Types                      |
|request_rewrite_enabled           | False                                                |
|response_rewrite_enabled          | True                                                 |
|rsp_match_replace_pair[1]         |                                                      |
|match_string                      | ABC                                                  |
|replacement_string                |                                                      |
|       type                       | LITERAL_STRING                                       |
|       val                        | XYZ                                                  |
| sideband_profile                 |                                                      |
|   sideband_max_request_body_size | 1024 bytes                                           |
| vip[1]                           |                                                      |
|   vip_id                         | 1                                                    |
|   ip_address                     | 10.160.33.200                                        |
|   enabled                        | True                                                 |
|   auto_allocate_ip               | False                                                |
|   auto_allocate_floating_ip      | False                                                |
|   avi_allocated_vip              | False                                                |
|   avi_allocated_fip              | False                                                |
| vsvip_ref                        | vsvip-VS3-Default-Cloud                              |
+----------------------------------+----------------------------------------------------- +

仮想サービスのコンテンツ書き換えプロファイル構成を表示するには、次の手順を実行します。

[admin:10-160-0-8]: show virtualservice virtualservice-1                                                                  
+----------------------------------+---------------------------------------------------------------------------------+ 
| Field                            | Value                                                                           | 
+----------------------------------+---------------------------------------------------------------------------------+ 
|uuid                              | virtualservice-80519ed3-00f8-437d-9b4e-66c12f331f60                             | 
|name                              | virtualservice-1                                                                | 
|enabled                           | True                                                                            | 
|services[1]	                   |                                                                                 | 
|port                              | 9000                                                                            | 
|enable_ssl                        | False                                                                           | 
|port_range_end                    | 9000                                                                            |  
|services[2]	                   |                                                                                 |  
|port       	                   | 9443                                                                            |  
|enable_ssl 	                   | True                                                                            |  
|port_range_end	                   | 9443                                                                            |  
|application_profile_ref           | applicationprofile-1                                                            |  
|network_profile_ref	           | System-TCP-Proxy                                                                |  
|pool_ref                          | pool-1                                                                          |  
|se_group_ref	                   | Default-Group                                                                   |  
|ssl_key_and_certificate_refs[1]   | System-Default-Cert-EC                                                          |  
|ssl_profile_ref	           | System-Standard                                                                 |  
|analytics_policy	           |                                                                                 |  
|full_client_logs                  |                                                                                 |  
|enabled     	                   | True                                                                            |  
|duration    	                   | 0 min                                                                           |  
|throttle    	                   | 0 per_second                                                                    |  
|client_insights                   | NO_INSIGHTS                                                                     |  
|all_headers	                   | True                                                                            |  
|metrics_realtime_update           |                                                                                 | 
|enabled     	                   | True                                                                            |  
|duration                          |0 min                                                                            | 
|udf_log_throttle                  |0 per_second                                                                     | 
|significant_log_throttle          |0 per_second                                                                     | 
|enabled                           |True                                                                             | 
|vrf_context_ref                   |global                                                                           | 
|enable_autogw                     |True                                                                             | 
|analytics_profile_ref             |System-Analytics-Profile                                                         | 
|vs_datascripts[1]                 |                                                                                 | 
|index                             | 0                                                                               | 
|vs_datascript_set_ref             | vsds1-0                                                                         | 
|weight                            |  1                                                                              | 
|delay_fairness                    | False                                                                           | 
|max_cps_per_client                |   0                                                                             | 
|limit_doser                       | False                                                                           | 
|type                              | VS_TYPE_NORMAL                                                                  | 
|cloud_type                        | CLOUD_NONE                                                                      | 
|use_bridge_ip_as_vip              | False                                                                           | 
|flow_dist                         | CONSISTENT_HASH_SOURCE_IP_ADDRESS_AND_PORT                                      | 
|ign_pool_net_reach                | False                                                                           | 
|ssl_sess_cache_avg_size           | 1024                                                                            | 
| remove_listening_port_on_vs_down | False                                                                           | 
|close_client_conn_on_config_update| False                                                                           | 
|bulk_sync_kvcache                 | False                                                                           | 
|tenant_ref                        | admin                                                                           | 
| cloud_ref                        | Default-Cloud                                                                   | 
| east_west_placement              | False                                                                           | 
| scaleout_ecmp                    | False                                                                           | 
| active_standby_se_tag            | ACTIVE_STANDBY_SE_1                                                             | 
| flow_label_type                  | NO_LABEL                                                                        | 
| content_rewrite                  |                                                                                 | 
| rewritable_content_ref           | sg-1                                                                            | 
| request_rewrite_enabled          | False                                                                           | 
| response_rewrite_enabled         | True                                                                            | 
| rsp_match_replace_pair[1]        |                                                                                 | 
| match_string                     | The Big Picture                                                                 | 
| replacement_string               |                                                                                 | 
| type                             | LITERAL_STRING                                                                  | 
| val                              | The Bigger Picture                                                              | 
| rsp_match_replace_pair[2]        |                                                                                 | 
| match_string                     | abankerisafellowwholendsyouhisumbrellawhenthesunisshining                       |                      
|replacement_string                |                                                                                 | 
|type                              | LITERAL_STRING                                                                  | 
|VAL                               | ABANKERISAFELLOWWHOLENDSYOUHISUMBRELLAWHENTHESUNISSHINING                       | 
|rsp_match_replace_pair[3]         |                                                                                 | 
| match_string	                   | literal                                                                         | 
|replacement_string                |                                                                                 | 
| type                             | LITERAL_STRING                                                                  | 
| val                              | blah                                                                            | 
| rsp_match_replace_pair[4]        |                                                                                 | 
| match_string                     | httpvar                                                                         | 
| replacement_string               |                                                                                 | 
|type                              | HTTP_HEADER_VAR                                                                 | 
| val                              | http_host                                                                       | 
| match_string                     | datascriptvar                                                                   | 
| replacement_string               |                                                                                 | 
| type                             | DATASCRIPT_VAR                                                                  | 
|  val                             | modified_hostname                                                               | 
|  rsp_match_replace_pair[6]       |                                                                                 | 
|  match_string                    | fghijkl                                                                         | 
|  replacement_string              |                                                                                 | 
|  type                            | HTTP_HEADER_VAR                                                                 | 
|  val                             | http_host                                                                       | 
|  rsp_match_replace_pair[7]       |                                                                                 | 
|  match_string                    | datascript_some_var                                                             | 
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | some_var                                                                        | 
|  rsp_match_replace_pair[8]       |                                                                                 | 
|  match_string                    | integer_variable                                                                | 
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | int_variable                                                                    | 
|  rsp_match_replace_pair[9]       |                                                                                 | 
|  match_string                    | true_var                                                                        | 
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | true_variable                                                                   | 
|  rsp_match_replace_pair[10]      |                                                                                 | 
|  match_string                    | false_var                                                                       | 
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | false_variable                                                                  | 
|  rsp_match_replace_pair[11]      |                                                                                 | 
|  match_string                    | unset_var                                                                       | 
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | get_unset                                                                       | 
|  rsp_match_replace_pair[12]      |                                                                                 | 
|  match_string                    | variable1                                                                       | 
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | multi_var1                                                                      | 
|  rsp_match_replace_pair[13]      |                                                                                 | 
|  match_string                    | small_match                                                                     | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | abcdefghijklmnopqrstuvwxyz 0123456789 ABCDEFGHIJKLMNOPQRSTUVQXYZ 9876543210 ABCD| 
|                                  | EFGHIJKLMNOPQRSTUVQXYZ 0123456789 9876543210_abcdefghijk                        | 
|  rsp_match_replace_pair[14]      |                                                                                 | 
|  match_string                    | ZYXWVUTSRQPONMLKJIHGFEDCBA_9876543210_0123456789_zyxwvutsrqponmlkjihgfedcba_The | 
|                                  | quick brown fox jumps over the lazy dog_Pack my box with five dozen liquor jugs.|             
|  replacement_string              |                                                                                 | 
|  type                            | DATASCRIPT_VAR                                                                  | 
|  val                             | modified_hostname                                                               | 
|  rsp_match_replace_pair[15]      |                                                                                 | 
|  match_string                    | nginx                                                                           | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | content rewrite                                                                 | 
|  rsp_match_replace_pair[16]      |                                                                                 | 
|  match_string                    | apache                                                                          | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | NGINX                                                                           | 
|  rsp_match_replace_pair[17]      |                                                                                 | 
|  match_string                    | FEDORA                                                                          | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | Ubuntu                                                                          | 
|  rsp_match_replace_pair[18]      |                                                                                 | 
|  match_string                    | SerVer                                                                          | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | backend                                                                         | 
|  rsp_match_replace_pair[19]      |                                                                                 | 
|  match_string                    | SSL_VERSION_TLS1_1                                                              | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | SSL_VERSION_TLS1_2                                                              | 
|  rsp_match_replace_pair[20]      |                                                                                 | 
|  match_string                    | Gambardella                                                                     | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | alledrabmaG                                                                     | 
|  rsp_match_replace_pair[21]      |                                                                                 | 
|  match_string                    | ztoa                                                                            | 
|  replacement_string              |                                                                                 | 
|  type                            | LITERAL_STRING                                                                  | 
|  val                             | ZTOA                                                                            | 
|  vip[1]                          |                                                                                 | 
|  vip_id                          | 0                                                                               | 
|  ip_address                      | 10.160.35.63                                                                    | 
|  enabled                         | True                                                                            | 
|  auto_allocate_ip                | False                                                                           | 
|  auto_allocate_floating_ip       | False                                                                           | 
|  avi_allocated_vip               | False                                                                           | 
|  avi_allocated_fip               | False                                                                           | 
|  auto_allocate_ip_type           | V4_ONLY                                                                         | 
|  vsvip_ref                       | vsvip-beK7uc                                                                    | 
|  use_vip_as_snat                 | False                                                                           | 
|  traffic_enabled                 | True                                                                            | 
+--------------------------------------------------------------------------------------------------------------------+ 
[admin:10-160-0-8]:   

コンテンツ書き換えルール

新しいオブジェクト モデルにより、ユーザーはコンテンツの書き換えルールのリストを構成できます。各ルールには、名前、インデックス、および構成する検索と置換のペアのリストがあります。構成されたルールは、定義された順序で実行されます。最初のルールは 2 番目のルールよりも優先され、残りのルールは後に続きます。

文字列タイプの検索

VMware NSX Advanced Load Balancer では、さまざまなタイプの文字列を検索できます。これらの型は、置換文字列の文字列型と似ています。次の文字列を検索できます。

  • リテラル文字列:検索して置き換える文字列の値と完全に一致します。

  • VMware NSX Advanced Load Balancer 変数:仮想サービス、IP アドレス、HTTP ホスト ヘッダー、仮想サービス ポートなどの変数を指定します。その変数の値は、検索に使用する文字列となります。

  • DataScript 変数:使用方法は置換文字列のと同様で、変数(avi.http.set_req_var() を使用)を定義する DataScript を構成して適用します。この DataScript 変数に設定された値は、 の検索に使用される文字列です。

  • 正規表現:PCRE と互換性のある正規表現を検索文字列として構成します。これにより、応答本文でこの正規表現に一致するすべての一致を検索できます。正規表現には、対応する置換文字列で使用できるキャプチャ グループが含まれている場合があります。

新しい文字列タイプの置き換え。

  • 文字列の組み合わせ:リテラル文字列と変数を混在できる文字列を作成できます。そこでは、テキストを変数名に追加したら、それぞれの値に解析されるようになります。たとえば、仮想サービスの IP アドレスとポートを ${vs_ip}:${vs_port} とします。この場合の変数は vs_ipvs_port で、それぞれ仮想サービスの IP アドレスとポートに置き換わります。変数は、${} 内の変数名によって判断されます。変数が定義されていない場合は、その代わりに空の文字列を使用できます。

[組み合わせ文字列] からも、変数 ${1} ,${2} ,…, ${n} を使用して正規表現キャプチャ グループにアクセスできます。

ペアの検索と置き換えの例

例 1(応答内の user-agent のすべてのインスタンスを文字列「NSX」に置き換えます)

  • SearchReplacePair:

    • search_string:

      • type: SEARCH_HTTP_VAR

      • val: ${http_user_agent}

    • replacement_string:

      • type: LITERAL_STRING

      • val: NSX

例 2(XML 応答のアドレス タグとポート タグを仮想サービスの IP とポートに置き換えます)

  • SearchReplacePair #1:

    • search_string:

      • type: REGEX_STRING.

      • val: (<address>)[\s]*([\w\.]*)[\s]*(</address>).

    • replacement_string:

      • type: COMBINATION_STRING.

      • val: ${1}${vs_ip}${3}.

  • SearchReplacePair #2:

    • search_string:

      • type: REGEX_STRING.

      • val: (<port>)8443(</port>).

    • replacement_string:

      • type: COMBINATION_STRING.

      • val: ${1}${vs_port}${3}.