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

推薦する

Linux で同じバージョンの R を使用して Seurat2 と Seurat3 を同時にインストールするチュートリアル

Seurat は、単一細胞解析用の重量級の R パッケージです。使用したことがある人なら誰でも、その...

MySQL 権限とデータベース設計のケーススタディ

権限とデータベース設計ユーザー管理SQLyogを使用してユーザーを作成し、権限を付与する基本コマンド...

Redux Toolkit で Redux を簡素化する方法

目次Redux Toolkitが解決する問題何が含まれていますか? Redux Toolkit AP...

Docker を使用して OpenLDAP+phpLDAPadmin 統合ユーザー認証を構築する方法

1. 背景LDAP を使用して、操作および保守に関連するユーザー名とパスワードを集中管理します。 1...

Linux ソースコードからのソケット (TCP) バインドの詳細な説明

目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...

Mac OS10.12 に mysql5.7.18 をインストールするチュートリアル

ウェブ全体を検索して、さまざまな落とし穴を見つけましたが、問題は解決しませんでした。ついに自分でも分...

Nginx+Tomcat 負荷分散クラスタのインストールと構成のケースの詳細な説明

目次序文1. Nginx+Tomcat 2. Nginxサーバーを構成する3. Tomcatアプリケ...

CocosCreatorで複数のタイマーを使用する方法の詳細な説明

1.タイムアウトを設定する3 秒後に abc を印刷します。一度だけ実行します。 setTimeou...

Windows での MySQL の詳細なインストール手順と基本的な使用方法

目次1. MySQLをダウンロードする2. MySQLをインストールする3. MySQL の基本的な...

MySQL をインストールした後に調整する必要がある 10 のパフォーマンス設定項目

このブログでは、MySQL データベースをインストールした後に調整することが推奨される 10 のパフ...

mysqlを使用して、URLから返されたhttp GETリクエストデータを記録します。

ビジネスシナリオの要件と実装ロジックの分析ビジネスでは、HTTP GET を使用してデータを要求する...

MySQL サーバー 5.7.20 のインストールと設定方法のグラフィック チュートリアル

この記事ではMySQL 5.7.20のインストールと設定方法を記録し、皆さんと共有します1. MyS...

ハイパーリンクアイコンの仕様: 記事の読みやすさを向上

1. ハイパーリンクアイコンの仕様とは?<br />ハイパーリンクアイコンの仕様は、「C...

MySql クライアントが数秒で終了する問題を解決する (my.ini が見つからない)

問題の説明 (環境: windows7、MySql8.0)今日、MySql をインストールした後、M...

Ubuntuが仮想マシンでインターネットに接続できない問題の解決策

インターネットに接続できない仮想マシンをセットアップするのは非常に面倒です。ここでは、Ubuntu ...