nginx でディレクトリ ホワイトリストと IP ホワイトリストを設定する方法

nginx でディレクトリ ホワイトリストと IP ホワイトリストを設定する方法

1. ディレクトリホワイトリストを設定する:指定されたリクエストパスに制限を設定しないでください。たとえば、apiディレクトリ以下のリクエストを制限しない場合は、次のように記述します。

サーバ{
    場所 /アプリ {
      プロキシパス http://192.168.1.111:8095/app;

      limit_conn 接続数 20;

      制限レート 500k;

      limit_req ゾーン=foo バースト=5 ノードレイ; 
    }
    場所 /app/api {
      プロキシパス http://192.168.1.111:8095/app/api
    }
}
# nginx は正確なマッチングを優先するため、上記の書き方では api ディレクトリ以下のパスを制限します。

2. IPホワイトリストを設定するには、nginx geoとnginx mapを使用する必要があります。

手動で削除していない場合 (--without-http_geo_module または --without-http_map_module)、nginx はデフォルトで ngx-http-geo-module および ngx-http-map-module 関連コンテンツをロードします。

ngx-http-geo-module を使用すると、クライアントの IP アドレスに応じて値が異なる変数を作成できます。

ngx-http-map-module は、他の変数とその値に基づいて変数を作成できます。これにより、分類、つまり複数の変数を異なる値にマッピングして 1 つの変数に格納することができます。

Nginx geo フォーマット構文 (構文フォーマット): geo [$address] $variable { ... }
デフォルト: -
コンテンツ(構成セクション): http
Nginx マップ形式の構文 (構文形式): map String $variable { ... }
デフォルト:-
コンテンツ(構成セクション): http
 
ホワイトリストの設定例 http{
   # ... その他の設定内容 # ホワイトリスト IP リスト変数 geo $whiteiplist を定義する {
     デフォルト 1 ;
     127.0.0.1/32 0;
     64.223.160.0/19 0;
   }
   #mapコマンドを使用して、ホワイトリスト内のクライアント要求IPを空の文字列map $whiteiplist $limit{にマップします。
     1 $binary_remote_addr ;
     0 "";
   }
   #リクエスト制限コンテンツ limit_conn_zone を構成する $limit zone=conn:10m;
   limit_req_zone $limit zone=allips:10m レート=20r/s;
   サーバ{
     場所 /アプリケーション名 {
       プロキシパス http://192.168.1.111:8095/app;
       limit_conn 接続数 50;
       制限レート 500k;
       limit_req ゾーン=allips バースト=5 ノードレイ;
     }
   }
}
ホワイトリスト設定を使用すると、協力顧客や検索エンジンなどからのリクエストをフィルタリングして制限できます(特別なケースの処理)
 
#Post リクエストのみを制限するなど、指定したリクエストのみを制限する場合は、次のようにします。
http{
   # その他のリクエスト
   # リクエストアドレスマップ map $request_method $limit {
     デフォルト "";
     $binary_remote_addr を POST します。
   }
   #制限の定義 limit_req_zone $limit zone=reqlimit:20m rate=10r/s;
   サーバ{
     ... #通常の制限と同じ}
}
#これに基づいて、指定されたメソッドに対してホワイトリスト制限処理を実行する場合は、次のようにします。
http{
   #...
   #ホワイトリストマップを定義する $whiteiplist $limitips{
     1 $バイナリリモートアドレス;
     0 "";
   }
 
   #ホワイトリストに基づいて、指定されたメソッドのリクエスト制限マップを定義します $request_method $limit {
     デフォルト "";
     # $binary_remote_addr を POST します。
     $limitips を POST します。
   }
 
   #リクエストのlimit_req_zoneを参照 $limit zone=reqlimit:20m rate=10r/s;
 
   #サーバー内の参照サーバー{
     #...通常の制限と同じ}
}

nginx でディレクトリ ホワイトリストと IP ホワイトリストを設定する上記の方法は、エディターがあなたと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • nginxリバースプロキシのマルチポートマッピングの実装
  • Nginx ポートマッピングの設定方法
  • Centos7 に nginx をインストールした後、conf.d ディレクトリに default.conf ファイルがないために「Welcome to nginx on Fedora!」というエラーが表示される問題を解決します。
  • Linuxシステムで実行中のnginxディレクトリを見つける
  • 指定したディレクトリに nginx をインストールする方法の例
  • nginxディレクトリパスをリダイレクトする方法
  • NGINX を介したサブディレクトリまたはセカンダリディレクトリへの Vue のデプロイメントの詳細な説明
  • Nginx ローカル ディレクトリ マッピング実装コード例

<<:  jsは古典的なマインスイーパゲームを実装します

>>:  mysql+mycat、負荷分散、マスタースレーブレプリケーション、読み取り/書き込み分離操作に基づく安定した高可用性クラスタを構築します。

推薦する

UbuntuでOpenCVをコンパイルしてインストールする方法

opencv2 の簡単なインストール: conda インストール --channel https:/...

Vueコンポーネント登録方法の解釈

目次概要1. グローバル登録2. 現地登録3. モジュールシステムへのローカル登録概要コンポーネント...

CentOS 7へのJenkinsのインストール手順の詳細な説明

Yum経由でJenkinsをインストールする1. インストール # yum ソースをインポート wg...

フォームの読み取り専用属性と無効な属性についての簡単な説明

フォーム内の読み取り専用および無効な属性1. 読み取り専用:サーバーは、ユーザーがデータを変更するこ...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...

Linux でのマルチスレッドプログラミング例の分析

1 はじめにスレッド技術は 1960 年代にすでに提案されていましたが、マルチスレッドがオペレーティ...

HTMLで細い線のテーブルを作成する簡単な例

この細線の表を作成する方法については、Baidu で検索すると、表に対して border="...

React Contextの理解と応用についてお話ししましょう

目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...

MySQL 論理バックアップとリカバリ テストの概要

目次1. データベース論理バックアップとはどのようなバックアップですか? 2. よく使われる論理バッ...

Tomcat が設定ファイルを外部に配置するためのソリューション

質問通常の開発では、プロジェクトを Tomcat にデプロイする場合、プロジェクトを war パッケ...

Centos サーバーに MySql をデプロイし、Navicat に接続するプロセスの詳細な説明

(1)サーバー構成: [root@localhost ~]# cd /usr/local/src/ ...

Docker クリーニングキラー/Docker オーバーレイ ファイルがディスク領域を大量に占有する

[インターネット上の移行ファイルをすべて見ると、信頼性が低く、症状のみを治療し、根本的な原因を治療し...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、シンプルなショッピングカートケースを実装するためのVueの具体的なコードを...

テーブル内の要素のドラッグと並べ替えの問題について簡単に説明します

最近、要素テーブルを使用すると、並べ替えの問題によく遭遇します。単純な並べ替えであれば、要素の公式が...