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

推薦する

Docker5フル機能の港湾倉庫構築プロセス

Harbor は、Docker イメージを保存および配布するためのエンタープライズ レベルのレジスト...

Linux の grep コマンドと egrep コマンドの詳細な説明

反復/egrep構文: grep [-cinvABC] 'word' ファイル名-c...

クリーンなXHTML構文

XHTML を書くには、明確な HTML 構文が必要です。 XHTMLを書くには、きれいなHTML構...

Webフロントエンド開発コース Webフロントエンド開発ツールとは

インターネット技術の発展に伴い、ユーザーはますます Web ページに依存するようになり、Web フロ...

MySQLトリガーの簡単な使用例

この記事では、例を使用して MySQL トリガーの簡単な使用方法を説明します。ご参考までに、詳細は以...

Linuxのファイル操作の知識ポイントを詳しく解説

ファイル操作に関連するシステムコール作成するint creat(const char *ファイル名,...

ブラウザでのjsのイベントループイベントキューの詳細な説明

目次序文スタックと2つのキューを理解する実行プロセス簡単な例より難しい例要約する序文以下の内容はブラ...

MacでMysqlのルートパスワードを忘れた場合の解決方法

長い間コンピューターで mysql を使用していなかったので、パスワードを忘れてしまいました。でも、...

Nginx シグナル制御

Nginx の紹介Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IM...

node-media-serverを使用してシンプルなストリーミングメディアサーバーを構築する

node-media-server を使用するプロセスの一部を記録します。この記事の環境はWindo...

MySql ビュー、トリガー、ストアド プロシージャに関する簡単な説明

ビュービューとは何ですか?ビューの役割は何ですか?ビューは仮想テーブルであり、データ自体を含まない論...

フォームファイル選択ボックスのスタイルをカスタマイズする例

コードをコピーコードは次のとおりです。 <!DOCTYPE html> <html...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

MySQL データ挿入効率の比較

データを挿入するとき、以前オフィス システムに取り組んでいたときにはデータベースのパフォーマンスにつ...

読み込み進捗バーのネイティブ JS 実装

この記事では、ネイティブ JS によって実装された動的読み込みプログレス バーの特殊効果を紹介します...