nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

nginx で正規表現を使用してワイルドカードドメイン名を自動的に一致させる方法

Nginxは正規表現を使用して、ワイルドカードドメイン名をディレクトリに自動的に一致させます。

Nginx を使用すると、仮想ホストの機能を実現し、複数の URL をバインドすることができます。
通常、プライマリ ドメイン名は構成でハードコードされているため、一致するものを追加する場合は手動で追加する必要があります。

基本的な書き方

最も基本的な書き方はserver{
聞く 80;
サーバー名 www.a.com;
ルート /html/a;
…
}

サーバ{
聞く 80;
サーバー名 www.b.com;
ルート /html/b;
…
}

正規表現

ドメイン名がバインドされると、対応するディレクトリに自動的にマッチングされるため、ドメイン名ごとに設定を 1 つずつ記述する必要はありません。
一致するディレクトリは、html/ドメイン名/セカンダリドメイン名です。たとえば、www.baidu.com は baidu.com/www ディレクトリと一致します。

サーバー{
 聞く 80;
 # $subdomain は第 2 レベル以上のドメイン名と一致します # $domain は第 1 レベルドメイン名と一致します # $tld はルートノード名と一致します server_name ~^((?<subdomain>.*)\.)?(?<domain>[^.]+)\.(?<tld>[a-zA-Z]+)$;

 #$subdomainがない場合はwwwにジャンプします
 ($subdomain = "") の場合 {
  # $subdomain を "_" に設定;
  $subdomain を "www" に設定します。
  301 $scheme://www.$domain.$tld$request_uri を返します。
 }

 ルート /usr/share/nginx/html/${ドメイン}.${tld}/${サブドメイン};
}

他の

nginx の一致順序については多くの記事があるので、詳細には触れません。
正規表現は一致の優先順位が最も低いため、他の一致が見つからない場合にのみ一致し、他の完全一致に影響を与えることを心配する必要はありません。

ほとんどの人は、一致するドメイン名をそれほど多くは持っていません。その代わりに、悪意のあるドメイン名ポインタをブロックしたいと考えています。

ただし、テスト時に実行中の Web ページに影響を与えないように、ホストに IP ドメイン名レコードを追加し、存在しないドメイン名をテストに使用すると、現時点ではより便利です。

要約する

nginx が正規表現を使用してワイルドカード ドメイン名をディレクトリに自動的に一致させる方法については、これで終わりです。nginx が正規表現を使用してワイルドカード ドメイン名をディレクトリに一致させる方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx の if 文と正規表現を組み合わせて文字列を切り捨てる
  • Nginx 正規表現の詳細な説明
  • nginx ロケーション設定の正規表現例の詳細な説明
  • Nginx 擬似静的書き換え通常リソースの概要
  • Nginx の書き換え正規マッチング書き換え方法の例
  • nginx 設定の場所の概要の場所の通常の書き込みと書き換えルールの書き込み
  • Pythonによるnginxアクセスログの定期分析
  • nginx を使用して正規表現で指定された URL リクエストを傍受する方法
  • Nginx 正規表現関連のパラメータとルールの紹介

<<:  MySQL 最適化のヒント: 重複削除の実装方法の分析 [数百万のデータ]

>>:  Mybatisの各SQL文の実行時間の統計

推薦する

Linux 仮想ホストで SourceGuardian (sg11) 暗号化コンポーネントを有効にする詳細な手順

注: sg11 弊社では Linux システム仮想ホストのセルフインストールのみサポートしております...

Linuxでスワップパーティションファイルを作成する方法

スワップの紹介Linux のスワップ (スワップ パーティション) は、Windows の仮想メモリ...

Linux の netstat コマンドの詳細な紹介

目次1. はじめに2. 出力情報の説明3. netstatの共通パラメータ4. netstatネット...

Win10 は Tsinghua ソースを使用して pytorch-GPU バージョンをすばやくインストールします (推奨)

Cudaがインストールされているかどうかを確認してくださいアナコンダプロンプトに入力nvcc -V...

30 種類の無料の高品質英語リボンフォント

30 種類の高品質な英語リボン フォントを無料でダウンロードできます。デザイナーは常に、25 種類の...

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

MySQL データを誤って削除した場合の簡単な解決策 (MySQL フラッシュバック ツール)

概要Binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

重複したMySQLテーブルをマージして削除する簡単な方法

シナリオ:クロールされたデータは、別のメインテーブルと同じ構造を持つデータテーブルを生成するため、マ...

インラインブロックを使用した複数のdiv間の間隔はプログラミング方法とは異なります

inline-block について学習しているときに、境界線と inline-block を持つ複数...

Vueカスタム指示により、ポップアップウィンドウのドラッグ4辺ストレッチと対角ストレッチ効果を実現

導入同社の最近の Vue フロントエンド プロジェクトの要件: ポップアップ ウィンドウのドラッグ、...

Vueはvueメタ情報を使用して各ページのタイトルとメタ情報を設定します。

title: vue は vue-meta-info を使用して各ページのタイトルとメタ情報を設定...

Ubuntu 20.04 LTS で Java 開発環境を構成する

Java開発キットjdkをダウンロードするJDK のダウンロード アドレスはhttp://www.o...

Reactは複雑な検索フォームの展開と折りたたみ機能を実装します

時間に余裕を持って、過去を忘れましょう。前のセクションでは、[検索] フォームとクエリおよびリセット...

EF (Entity Framework) の挿入または更新データ エラーの解決方法

エラー メッセージ:ストアの更新、挿入、または削除ステートメントが予期しない行数 (0) に影響を与...

Dockerボリューム権限管理の詳細な説明

ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...