Nginx は高性能 Web サーバーであり、リバース プロキシや負荷分散によく使用されます。リバース プロキシ シナリオでは、Nginx を使用すると、複数のサーバーからのリクエストを均一に転送できるため、Web サイトのアクセス速度と安定性が向上します。ただし、一部の特殊なシナリオでは、ユーザーのデバイスに応じてリクエストを異なる方法で転送または処理する必要がある場合があります。たとえば、モバイル デバイスのリクエストの場合、より良いページ アクセス エクスペリエンスを実現するために、特別に最適化されたモバイル サーバーにリクエストを転送する必要がある場合があります。このとき、デバイス識別に基づく ACL 設定は非常に役立ちます。ここでは、Nginx でデバイス対応 ACL を使用するのに役立ついくつかの基本的な手順とサンプル コードを示します。
ステップ 1: デバイス識別プラグインをインストールする
Nginx はデフォルトではデバイス識別をサポートしていないため、最初に関連するプラグインをインストールする必要があります。現在、より一般的に使用されているプラグインは ngx_http_browser_module と ngx_http_user_agent_module で、どちらも共通のユーザー エージェント情報を識別し、使用する対応する変数を提供します。以下のサンプルコードは ngx_http_user_agent_module に基づいて実装されています。
まず、Nginx をコンパイルするときにこのモジュールを追加する必要があります。これは、configure コマンドに --with-http_user_agent_module オプションを追加することで実現できます:
./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with - pcre --with-http_realip_module --with-http_geoip_module --with-http_user_agent_module
ステップ 2: デバイス識別判定の設定
Nginx では、デバイス識別判定は if ステートメントと達成する $ua 変数。具体的には、if ステートメントを使用して $ua 変数の値に基づいてデバイス タイプを決定し、対応する分岐でさまざまな操作を実行できます。簡単な例を次に示します。
map $http_user_agent $is_mobile {
default 0; ~*mobile|android|ipod|iphone|blackberry|phone|playbook|tablet|kindle|silk 1;
}
server {
listen 80; server_name example.com; if ($is_mobile) { # 处理移动设备的请求 proxy_pass http://mobile.example.com; } else { # 处理桌面设备的请求 proxy_pass http://www.example.com; }
}
at In上の例では、まず $is_mobile 変数を定義します。この変数の値は、$http_user_agent 変数の値に基づいて変化します。具体的には、$http_user_agent の値に mobile、android、ipod、iphone、blackberry、phone、Playbook、tablet、kindle、silk などのキーワードが含まれる場合、$is_mobile の値は 1 になり、それ以外の場合は 0 になります。次に、Nginx 構成ファイルの if ステートメントを使用して、$is_mobile 変数の値に基づいてデバイス タイプを決定し、リクエストを別のサーバーに転送します。
if 文自体が Nginx のパフォーマンスに影響を与えるため、不要な場所での if 文の使用はできるだけ避ける必要があることに注意してください。さらに、ngx_http_map_module モジュールを使用してデバイス タイプと転送アドレスのマッピングを実装し、構成をさらに簡素化することもできます。
ステップ 3: 構成のテストと最適化
デバイス認識のための ACL 構成は一般に複雑で、さまざまなデバイス タイプとブラウザのバージョンを考慮する必要があります。構成の正確性と信頼性を確保するには、十分なテストと最適化を行う必要があります。以下にいくつかの提案を示します。
概要
デバイス識別に基づいた ACL 構成を使用すると、Nginx でモバイル デバイスやデスクトップ デバイスからのリクエストをより適切に処理できるようになり、ユーザー エクスペリエンスと Web サイトのパフォーマンスが向上します。デバイスの種類とブラウザのバージョンは多様で複雑であるため、構成の正確さと信頼性を確保するために十分なテストと最適化を実施する必要があることに注意してください。また、Nginx のパフォーマンスと安定性を向上させるために、不要な場所での if ステートメントの使用はできるだけ避ける必要があります。
以上がNginx リバースプロキシのデバイス識別に基づく ACL 設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。