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インデックスの基本構文

推薦する

JavaScript データ型変換の例 (他の型を文字列、数値型、ブール型に変換する)

序文データ型変換とは何ですか?フォームまたはプロンプトを使用して取得されるデフォルトのデータ型は文字...

n 個のコンテナ要素による無限スクロールの実装コード

シナリオ最大 10000 要素のリストを正しくレンダリングする方法。無限ドロップダウン読み込みテクノ...

JavaScript関数におけるこのポイントの問題の詳細な説明

このキーワードどのオブジェクトが関数を呼び出しますか? また、関数内の this はどのオブジェクト...

axiosのシンプルなカプセル化と使用例コード

序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

異なるブラウザ間で互換性のあるテキスト配置を実現する CSS

フォームのフロントエンド レイアウトでは、テキスト ボックスのプロンプト テキストを両端に揃える必要...

CentOS に MySQL 5.5 をインストールするための完全な手順

目次1. インストール前の準備、インストールパッケージのダウンロード1 インストールの準備2 インス...

Linux の crw、brw、lrw などのファイル属性は何ですか?

ファイルとは何ですか?すべてのファイルは実際には文字列のストリームですが、適切な解析方法を使用すると...

MySQL マスタースレーブレプリケーションの遅延の原因と解決策

目次レプリケーション ロジックの簡単な概要:遅延の原因と解決策〇メインデータベースへの頻繁なDMLリ...

js でクラスセレクターと名前属性セレクターを実装する手順の例

jQuery の登場により、DOM の操作効率が大幅に向上し、開発がより高いレベルに引き上げられまし...

MySQLデータベースのマスタースレーブレプリケーションの原理と機能の分析

目次1. データベースのマスター/スレーブ分類: 2. MySQL マスタースレーブの紹介3. マス...

mysql8.0.20 のデータディレクトリを移行する方法

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

Mysql トランザクション分離レベルの読み取りコミットの詳細な説明

MySQL トランザクション分離レベルを表示する mysql> '%isolation...

@Font-face の基本的な使い方と、すべてのブラウザと互換性を持たせる方法

@Font-face 基本紹介: @font-face は、Web ページにカスタム フォントを表示...

MySQLのROUND関数の丸め演算における落とし穴の分析

この記事では、MySQL の ROUND 関数を使用した丸め操作の落とし穴を例を使って説明します。ご...