Nginx は、高性能のオープン ソース Web サーバーおよびリバース プロキシ サーバーであり、その拡張性と強力な構成オプションにより、Web 開発に不可欠なコンポーネントの 1 つとなっています。 Nginx のリバース プロキシ機能は、クライアントからのリクエストを複数のバックエンド サーバーに送信して、負荷分散と高可用性を実現します。
リバース プロキシでは、バックエンド サーバーが複数のサービスを処理する可能性があるため、リクエスト URL のパスに従って照合し、リクエストを正しいバックエンド サーバーに転送する必要があります。 Nginx は、URL パスに基づいた ACL (アクセス コントロール リスト) 構成を提供し、指定された URL ルールに従ってリクエストを対応するバックエンド サーバーにルーティングできます。
この記事では、URL パスの一致に基づいて Nginx リバース プロキシに ACL 構成を実装する方法を紹介します。
ACL はアクセス許可を制御するために使用されるメカニズムであり、特定のルールに基づいてリクエストのアクセスを許可するかどうかを決定できます。 Nginx では、location
ディレクティブを使用して ACL ルールを構成できます。 location
命令の構文は次のとおりです。
location [ = | ~ | ~* | ^~ ] uri { ... }
uri パラメータには、通常の URI パスまたは正規表現を指定できます。 URI パスを ACL ルールとして使用する場合、次の一致文字を使用できます。
=
: 完全一致。URI パスのみが場所の値と完全に同じです。ディレクティブの成功。 : 正規表現によるマッチング、大文字と小文字が区別されます。
: 正規表現によるマッチング、大文字と小文字は区別されません。
http { upstream myapp1 { server 192.168.0.1; } upstream myapp2 { server 192.168.0.2; } upstream myapp3 { server 192.168.0.3; } server { listen 80; server_name myserver.com; location /app1 { proxy_pass http://myapp1; } location /app2 { proxy_pass http://myapp2; } location /app3 { proxy_pass http://myapp3; } } }
上記の構成ファイルでは、
upstream ディレクティブを使用して 3 つのバックエンド サーバーを定義し、それぞれ server
ブロックで location
ディレクティブを使用します。 3 つのリバース プロキシ ルールが構成されています。リクエスト URI パスが /app1
、/app2
、/app3
の場合、Nginx は負荷分散を実現するためにリクエストを対応するバックエンド サーバーに転送します。高可用性です。 URL パスの一致
Nginx リバース プロキシで負荷分散する必要があるサービスが 2 つあると仮定します。それらの URI パスは次のとおりです:
/api/v1/app1http { upstream myapp1 { server 192.168.0.1; } upstream myapp2 { server 192.168.0.2; } server { listen 80; server_name myserver.com; location ~ ^/api/v1/app1 { proxy_pass http://myapp1; } location ~ ^/api/v2/app2 { proxy_pass http://myapp2; } } }
上記の構成ファイルでは、
location 正規表現を使用します。 ディレクティブのmatching関数は、対応するバックエンドサーバーへのリクエストパスを照合します。
#^
/v1/app1
このようにして、複雑な URL パスに基づいて照合し、より詳細なリバース プロキシ制御と転送機能を実現できます。 以上がNginx リバース プロキシでの URL マッチングに基づく ACL 設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。