nginx の default_server 定義とマッチングルールの詳細な説明

nginx の default_server 定義とマッチングルールの詳細な説明

nginx の default_server ディレクティブは、server_name と一致しないリクエストを処理するためのデフォルト サーバーを定義できます。明示的に定義されていない場合は、最初に定義されたサーバーが default_server として選択されます。

上記のルールを理解した後、バインドされていないドメイン名のアクセスまたは直接 IP アクセスをキャプチャし、403 ページにリダイレクトできます。

1. nginx 暗黙のデフォルトサーバー

http {
  # デフォルトサーバーが明示的に宣言されていない場合は、最初のサーバーが暗黙的にデフォルトサーバーとして設定されます
  サーバー{
    聞く 80;
    server_name _; # _ はポイントではありません __ も OK です ___ 403 を返すこともできます; # 403 禁止
  }
  
  サーバー{
    聞く 80;
    サーバー名 www.a.com;
    ...
  }
  
  サーバー{
    聞く 80;
    サーバー名 www.b.com;
    ...
  }
}

多くの人がコピー&ペーストして、server_name を '_' に設定する必要があるという考えを広めていますが、実際にはそれは何の関係もありません。 「_」は、ビジネスドメイン名とは関係のないリクエスト回復サービスです。当社のオンラインビジネスがすべて明確なビジネスドメイン名でアクセスされている場合、ワイルドカード解決によって発生した一部の非ビジネスドメイン名または IP アクセスは、このサーバーによってリサイクルされます。

デフォルト サーバーが明示的に定義されていない場合、nginx は最初に構成されたサーバーをデフォルト サーバーとして使用します。つまり、リクエストがどの server_name とも一致しない場合、このサーバーがリクエストを処理します。そのため、IP アドレスを使用して直接アクセスすると、ここで定義された最初のサーバーに渡されて処理され、403 禁止になります。

2. デフォルトサーバーを明示的に定義する

http {
  サーバー{
    聞く 80;
    サーバー名 www.a.com;
    ...
  }
  
  サーバー{
    聞く 80;
    サーバー名 www.b.com;
    ...
  }
  
  # デフォルトサーバーの定義を表示する
  サーバー{
    80 default_server をリッスンします。
    サーバー名_;
    403 を返します。# 403 禁止
  }
  
}

仮想ホストまたは複数のサービスを構成する場合、複数のサーバー構成ファイルが存在するため、デフォルト サーバーを明示的に指定することをお勧めします。暗黙的な方法を使用して最初に読み込まれたサーバーをデフォルト サーバーとして選択すると、常に最初に読み込まれるサーバーを確認する必要があり、リスクが生じます...

3. server_name を ip として直接指定します (ip アクセスのみを禁止できます)

http {
  サーバー{
    聞く 80;
    サーバー名 www.a.com;
    ...
  }
  
  サーバー{
    聞く 80;
    サーバー名 www.b.com;
    ...
  }
  
  # ip server_nameを直接指定
  サーバー{
    聞く 80;
    サーバー名 xxx.xxx.xxx.xxx;
    403 を返します。# 403 禁止
  }
  
}

上記の 3 つの方法はすべて IP による直接アクセスを禁止できますが、1 と 2 ではバインドされていないドメイン名によるアクセスも禁止できます (たとえば、プライマリ ドメイン名を解決した場合)。

注: nginx バッチが設定 conf をロードする場合、それらは ASCII 順でロードされ、server_a.conf、server_b.conf、server_c.conf の順にロードされます。default_server が定義されていない場合、ドメイン名/IP にバインドされていないリクエストを処理するためのデフォルト サーバーとして server_a が使用されます。

nginx の default_server の定義とマッチングルールの詳細な説明については、これで終わりです。より関連性の高い nginx default_server マッチングルールについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx転送マッチングルールの実装
  • Nginx 構成の場所の一致ルールの例の説明
  • Nginx がリクエストを処理する際のマッチングルールの詳細な分析
  • Nginx ロケーション ディレクティブ URI マッチング ルールの詳細な概要
  • Nginx ロケーションマッチングルールの例
  • nginx マッチングルールの簡単な概要 (推奨)
  • Nginx ロケーションマッチングルールの詳細な説明
  • Nginxサーバのロケーションディレクティブマッチングルールの詳細な説明
  • Nginx のロケーション マッチング ルールの概要

<<:  Vue Element Sortablejs を使用してテーブル列をドラッグする詳細な説明

>>:  MySQLインデックスの基本構文

推薦する

MySQL ストアドプロシージャとストアドファンクションの詳細な説明

1 ストアドプロシージャ1.1 ストアドプロシージャとは何かストアド プロシージャは、特定の機能を実...

Docker で MySQL データベースを使用して LAN アクセスを実現する

1. MySQLイメージを取得する docker pull mysql:5.6注: mysql5.7...

VueにおけるAxios非同期通信の詳細な説明

1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...

要素の$notifyポイントについての簡単な説明

当初の意図は、element-ui の $notify 通知をコンポーネントにカプセル化することでし...

elementui の el-popover スタイルの変更が有効にならない問題の解決策

element-uiを使用する場合、el-popoverというよく使われるコンポーネントがありますが...

MySQLスタートアップが起こした事故の実録

目次背景MySQLが完全に起動したかどうかを確認する方法事故最初の変更2回目の改訂要約するMySQL...

MySQL を暗号化および復号化するいくつかの方法 (要約)

目次前面に書かれた双方向暗号化エンコード/デコードAES_ENCRYPT/AES_DECRYPT D...

WeChatアプレットの入力レベルとテキストエリアレベルの浸透率が高すぎる問題の解決策

WeChat ミニプログラムのネイティブ コンポーネントであるカメラ、キャンバス、入力 (フォーカス...

Docker を使用してフロントエンド アプリケーションをデプロイする方法

Dockerはますます普及しています。環境を軽量かつ柔軟に分離し、容量を拡張し、運用保守管理を容易に...

MySQL 文字セットの文字化けとその解決方法

序文文字セットは、一連のシンボルとエンコード規則です。Oracle データベースでも MySQL デ...

ウェブデザインと制作におけるハイパーリンクの効果の向上

ハイパーリンクを使用すると、ページからページへ、またはサイトからサイトへ瞬時に移動できます。このよう...

長いデータを HTML で表示するときに処理する方法

HTML で長いデータを表示する場合、マウスをその上に移動するとデータを切り捨てて完全なデータを表示...

MySQLトランザクションの特徴と分離レベルについてお話ししましょう

インターネットにはすでにこの種の記事が溢れていますが、私がこれをまだ書いている理由は単純です。それは...

SQL 文における複合主キーと結合主キーに関する予備的研究

1. 複合主キーいわゆる複合主キーとは、テーブルの主キーが複数のフィールドで構成され、ビジネス上の意...

HTML テーブルタグチュートリアル (12): 境界線スタイル属性 FRAME

FRAME プロパティを使用して、表の境界線のスタイル タイプを制御します。基本的な構文<T...