Nginx で IP と IP 範囲をブロックする方法

Nginx で IP と IP 範囲をブロックする方法

前面に書かれた

Nginx は単なるリバース プロキシおよび負荷分散サーバーではなく、電流制限、キャッシュ、ブラックリストとホワイトリスト、グレースケールの公開など、多くの強力な機能も提供できます。以前の記事では、Nginx が提供するこれらの機能を紹介しました。友人は[Nginx 特別トピック]を参照して下さい。今日は、Nginx のもう 1 つの強力な機能である、IP と IP 範囲の無効化を紹介します。

IPとIP範囲を無効にする

Nginx の ngx_http_access_module モジュールは、設定内の IP または IP セグメントをブロックできます。構文は次のとおりです。

IPを拒否します。
サブネットを拒否します。
IP を許可します。
サブネットを許可します。
# すべての IP をブロック
すべてを否定する;
# すべての IP を許可
すべて許可する。

ルール間に矛盾がある場合は、最初に一致するルールが優先されます。

IPおよびIPセグメントの設定と無効化

以下の手順では、nginx ディレクトリが /usr/local/nginx/ にあることを前提としています。

まず、IP をブロックするための設定ファイル blockips.conf を作成し、次に vi blockips.conf を使用してこのファイルを編集し、ファイルにブロックする IP を入力します。

1.2.3.4 を拒否します。
91.212.45.0/24 を拒否します。
91.212.65.0/24 を拒否します。

次に、このファイルを保存し、nginx.conf ファイルを開いて、http 構成セクションに次の構成行を追加します。

blockips.conf をインクルードします。

nginx.conf ファイルを保存し、現在の nginx 構成ファイルが有効かどうかをテストします。

nginx の sbin ディレクトリに nginx の sbin ディレクトリを作成します。

設定に問題がなければ、次のように出力されます。

設定ファイル /usr/local/nginx/conf/nginx.conf の構文は正常です
設定ファイル /usr/local/nginx/conf/nginx.conf のテストは成功しました

設定に問題がある場合は、構文上の問題がどこにあるかを確認する必要があります。問題がない場合は、以下のコマンドを実行して、nginx に設定ファイルを再読み込みさせる必要があります。

/usr/local/nginx/sbin/nginx -s リロード

イントラネットIPのみ許可

すべての外部 IP を禁止し、内部 IP のみを許可するにはどうすればよいでしょうか?

次の設定ファイル

位置 / {
 # 1 つのワークステーションをブロックする
 192.168.1.1 を拒否します。
 # 192.168.1.0/24 内の誰でも許可する
 192.168.1.0/24 を許可します。
 # 世界の残りを落とす
 すべてを否定する;
}

上記の構成では、192.168.1.1 は禁止され、他のイントラネット セグメントは許可され、その後、すべて拒否によって他のすべての IP が禁止されます。

nginx の 403 ページのフォーマット

nginx の 403 ページをフォーマットするにはどうすればよいですか?

まず、次のコマンドを実行します。

/usr/local/nginx/html をコピーします
vi エラー403.html

次に、403 のファイルの内容を入力します。例:

<html>
<head><title>エラー 403 - IP アドレスがブロックされました</title></head>
<本文>
あなたの IP アドレスはブロックされています。これがエラーである場合は、IP アドレスを添えて binghe ([email protected]) までご連絡ください。
</本文>
</html>

SSI が有効になっている場合、ブロックされたクライアントの IP アドレスは次のように 403 に表示されます。

Your IP Address is <!--#echo var="REMOTE_ADDR" --> blocked.

error403 ファイルを保存し、nginx 構成ファイル vi nginx.conf を開いて、サーバー構成セクションに次の内容を追加します。

# サーバーのエラーページを静的ページにリダイレクトする
 エラーページ 403 /error403.html;
 場所 = /error403.html {
     ルートhtml;
 }

次に、設定ファイルを保存し、nginx -t コマンドを使用して設定ファイルが正しいかどうかをテストします。正しい場合は、nginx -s reload を使用して設定を読み込みます。

Nginx で IP と IP セグメントをブロックする方法についての記事はこれで終わりです。Nginx で IP と IP セグメントをブロックする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • NginxはLua+Redisを使用してIPを動的にブロックします
  • nginx で IP をブロックし、イントラネット IP アクセスを許可する例

<<:  MySQLデータベースは何をするのか

>>:  Vueはmockjsを使用してシミュレートされたデータケースの詳細を生成します

推薦する

Ubuntu 20.04 では、隠し録音ノイズ低減機能が有効になります (推奨)

最近、 Ubuntu 20.04でkazamを使用して録音しているときに、問題が見つかりました。シス...

Vite2.x に基づく Vue 3.x プロジェクトの実装

Vue 3.x プロジェクトの作成 npm init @vitejs/app my-vue-app ...

フレックスレイアウトの改行スペースでの align-content の使用

1. この記事で実装した効果図は以下のとおりです。レイアウトの右側に Flex レイアウトを使用し、...

DockerでJenkinsをインストールし、初期プラグインのインストール失敗の問題を解決する

Jenkins をインストールした後、プラグインの初期ダウンロードが常に失敗し、インストールが失敗し...

MySQL で JSON 形式のフィールドをクエリする詳細な説明

作業開発プロセス中に、顧客の名前、携帯電話番号、ID カード、およびドキュメントの種類を動的に保存す...

ハイパーリンクを表示して開く方法

<br />インターネット上の無数の情報は基本的に HTML ドキュメントで構成されてお...

JavaScript が Jingdong の虫眼鏡の特殊効果を模倣

この記事では、Jingdong虫眼鏡を模倣したJavaScriptの具体的なコードを参考までに共有し...

nginx のインストールが完了した後に PHP を解析できない問題の解決方法

目次方法1方法2 nginxをインストールした後、PHPコードを解析できないことがわかりました。解決...

SqlクエリMySqlデータベーステーブル名と説明テーブルフィールド(列)情報

以下では、SQL クエリ ステートメントを使用して、Mysql データベース内のテーブルのテーブル名...

Nginx は高可用性クラスタ構築を実装します (Keepalived+Haproxy+Nginx)

1. コンポーネントと実装機能Keepalived: Haproxy サービスの高可用性を実現し、...

Win7 での Mysql 5.7.17 winx64 インストール チュートリアル

ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...

Docker に Tomcat をインストールし、Springboot プロジェクトの WAR パッケージをデプロイする方法

簡単です。チュートリアルを見てください。ブロガー1. まずdockerを起動するサービスdocker...

MySQL数千万の大規模データに対する30のSQLクエリ最適化テクニックの詳細な説明

1. クエリを最適化するには、テーブル全体のスキャンを避けてください。まず、where と orde...

WeChat公式アカウントでReactプロジェクトを実行する方法

目次1. a タグを使用して PDF をプレビューまたはダウンロードします。書き方は、携帯電話でクリ...

JTAを実装するためにAtomikosと組み合わせたTomcatについて

最近、プロジェクトは環境を切り替え、WebLogic を Tomcat に置き換えました。途中で発生...