Nginx は軽量で効率的な Web サーバーであり、最新の Web アプリケーションの構築で使用されることが増えています。リバース プロキシ機能により、Nginx をロード バランシング、キャッシュ、オープン ソース API ゲートウェイなどの目的に使用できます。この記事では、リクエスト メソッドとリクエスト ヘッダーに基づいた ACL (アクセス コントロール リスト) の設定に焦点を当てます。
ACL はアクセス制御に使用されるメカニズムであり、Nginx で広く使用されています。 ACL を通じて、Nginx はリクエストをフィルタリングして検証し、ターゲット サーバーに配布できます。 ACL メカニズムは主に、変数、演算子、値の 3 つの部分で構成されます。
変数は、リクエスト ヘッダー、リクエスト メソッド、リクエスト パラメータなど、リクエスト内の一部の情報です。 Nginx はこれらの変数の値をチェックして、リクエストをサーバーに送信するかどうかを決定できます。値は、変数が比較されるデータを指します。演算子は、変数と値を比較する方法を指定します。
Nginx は、リクエスト メソッドとリクエスト ヘッダーに基づいた ACL 構成をサポートしています。これらの構成は、次のような状況で使用できます。
リクエスト メソッドに基づいた ACL の設定
リクエスト メソッドに基づいて ACL を設定するのは非常に簡単です。変数 $request_method を使用し、この変数の値をチェックする演算子を定義してから、許可されるリクエスト メソッドのリストを指定する必要があります。以下に例を示します。
location /api { if ($request_method !~ ^(GET|POST|PUT)$ ) { return 405; } proxy_pass http://localhost:8080; }
この設定は、リクエスト メソッドが GET、POST、または PUT ではない場合、HTTP ステータス 405 (「メソッドが許可されていません」) が返されることを意味します。ここで GET、POST、または PUT 以外のリクエスト メソッドが一致した場合、Nginx はそれらをプロキシ サーバーに送信しません。
リクエスト ヘッダーに基づく ACL 設定
リクエスト ヘッダーに基づく ACL 設定は、リクエスト メソッドに基づく設定と似ています。変数 $http_ とリクエスト ヘッダーの名前を使用して、リクエスト内のヘッダー情報を取得できます。その後、演算子を使用して、リクエストベースのアプローチと同様の方法でヘッダーの値を確認できます。例:
location /api { if ($http_authorization !~* "Bearer [a-zA-Z0-9]+" ) { return 401; } proxy_pass http://localhost:8080; }
上記の構成では、リクエストヘッダーの Authorization に Bearer で始まる認可タグが含まれていない場合、HTTP ステータス 401 (「Unauthorized」) が返されます。したがって、Nginx は、正しい認証ヘッダーを除いて、プロキシ サーバーにリクエストを送信しません。
概要
Nginx の ACL 機能は、リクエスト関連の多くのロジックを実行するために使用できます。リクエスト メソッドとリクエスト ヘッダーに基づく ACL 構成は、特定のシナリオでアクセス制御を実装する効果的な方法です。さらに、ログ記録やレート制限などの他の Nginx 機能と組み合わせて、Web アプリケーションのセキュリティとパフォーマンスを強化できます。
以上がNginx リバースプロキシのリクエストメソッドとリクエストヘッダーに基づく ACL 設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。