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文の実行時間の統計

推薦する

Ubuntu で XFS ファイルシステム用の LVM を作成する方法

序文lvm (論理ボリューム マネージャー) 論理ボリューム管理は、Linux システムのニーズを満...

JavaScript でシンプルな Web 時計を実装する

JavaScript を使用して Web ページ クロックを実装します。効果は次の図に示されています...

JavaScript によるデータ視覚化: ECharts マップの作成

目次概要予防1. 使用方法2. 実装手順予備実装コード効果: Geo共通設定上記の構成を追加した後の...

JavaScript 配列の Reduce() メソッドの構文と例の分析

序文Reduce() メソッドは関数を累積器として受け取り、配列内の各値 (左から右へ) が単一の値...

MySQL タイムスタンプ比較クエリで遭遇する落とし穴と解決策

目次タイムスタンプ比較クエリで遭遇する落とし穴タイムスタンプクエリ範囲の問題タイムスタンプ比較クエリ...

MYSQL の COLLATE とは何ですか?

序文MySQL で show create table <tablename> コマンド...

MySQL ルートパスワードを変更する 4 つの方法 (要約)

方法1: SET PASSWORDコマンドを使用するまずMySQLにログインします。フォーマット: ...

ベンダー プレフィックス: ブラウザ エンジン プレフィックスが必要なのはなぜですか?

ベンダープレフィックスとは何ですか?ベンダー プレフィックス - ブラウザー エンジン プレフィック...

Vue.jsはアイコンをクリックしてズームインし、

前回の記事では、Vue で画像の切り抜きや拡大・縮小、回転を実現する方法を紹介しました。今回は、アイ...

Vueコンポーネントの動的コンポーネントの詳細な説明

目次要約する要約する配列が変更されると、対応するデータを動的にロードしますシナリオ: 異なるコンポー...

Vue3のレスポンシブ原則の詳細な説明

目次Vue2 レスポンシブ原則のレビューVue3 レスポンシブ原則の分析ネストされたオブジェクトの応...

MySQL パフォーマンス最適化のヒント

MySQL パフォーマンスの最適化MySQL はインターネット企業で広く使用されており、MySQL ...

HTML割引価格計算の実装原理とスクリプトコード

コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...

VScode設定のリモートデバッグLinuxプログラムの問題を解決する

VScode リモートデバッグ Linux プログラムの問題について見てみましょう。具体的な内容は以...

CSS3の新しい背景プロパティの詳細な説明

これまで、CSS の背景の属性には、color、image、repeat、attachment、po...