ホームページ >運用・保守 >Nginx >Nginx リバースプロキシのリクエストメソッドとリクエストヘッダーに基づく ACL 設定

Nginx リバースプロキシのリクエストメソッドとリクエストヘッダーに基づく ACL 設定

王林
王林オリジナル
2023-06-11 20:20:091773ブラウズ

Nginx は軽量で効率的な Web サーバーであり、最新の Web アプリケーションの構築で使用されることが増えています。リバース プロキシ機能により、Nginx をロード バランシング、キャッシュ、オープン ソース API ゲートウェイなどの目的に使用できます。この記事では、リクエスト メソッドとリクエスト ヘッダーに基づいた ACL (アクセス コントロール リスト) の設定に焦点を当てます。

ACL はアクセス制御に使用されるメカニズムであり、Nginx で広く使用されています。 ACL を通じて、Nginx はリクエストをフィルタリングして検証し、ターゲット サーバーに配布できます。 ACL メカニズムは主に、変数、演算子、値の 3 つの部分で構成されます。

変数は、リクエスト ヘッダー、リクエスト メソッド、リクエスト パラメータなど、リクエスト内の一部の情報です。 Nginx はこれらの変数の値をチェックして、リクエストをサーバーに送信するかどうかを決定できます。値は、変数が比較されるデータを指します。演算子は、変数と値を比較する方法を指定します。

Nginx は、リクエスト メソッドとリクエスト ヘッダーに基づいた ACL 構成をサポートしています。これらの構成は、次のような状況で使用できます。

  1. GET、POST、DELETE などのリクエスト メソッドのタイプに基づいてリクエストをフィルタリングしたい場合。
  2. Authorization、Content-Type などのリクエスト ヘッダーに基づいてリクエストをフィルタリングしたいと考えています。これは、クライアントの承認を確認し、アプリケーションに必要なセキュリティを維持するために API ゲートウェイで一般的に使用されます。

リクエスト メソッドに基づいた 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。