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

推薦する

Vueは左上と右上のスライドナビゲーションを実装します

ナビゲーションなどは日々の開発でよく使うので、記録として記事を書きます。ナビゲーションは終了/開始位...

NavicatがLinuxサーバー上のMySQLに接続できない問題を解決する

最初は悲しい気持ちになりました。スクリーンショットは以下の通りです。 少し苦労しましたが、解決策は次...

Vue.js ソースコード解析のカスタム手順の詳細な説明

序文コア機能のデフォルトの組み込みディレクティブ (v-model および v-show) に加えて...

Photoshop を使って Web ワイヤーフレームを作成する方法

この投稿では、通知、画像とビデオ、フォーム フィールド、タイトル、段落、箇条書きリスト、ナビゲーショ...

iframe なしの div ネスト HTML

最近、宿題をしているときに、iframe を使用せずにページをネストする必要があったため、jquer...

CSS の記述基準と順序を共有する [すべての人に使用を推奨]

CSSの記述順序1. 位置属性(位置、上、右、z-index、表示、フロートなど) 2. サイズ(...

MySQL ストアド プロシージャのエラー処理例の詳細な説明

この記事では、例を使用して MySQL ストアド プロシージャのエラー処理について説明します。ご参考...

MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL

序文トランザクション データ ディクショナリとアトミック DDL は、MySQL 8.0 で導入され...

mysql 計算関数の詳細

目次2. フィールドの連結2. MySQL関数の例をいくつか挙げてください。 2.1 シンボル処理2...

node.jsミドルウェアの種類についての簡単な説明

目次概要1. アプリケーションレベルのミドルウェア2. 組み込みミドルウェア3. サードパーティミド...

携帯電話番号の真ん中の4桁を隠すMySQL SQL文の方法

最初のクエリ テーブル構造 (sys_users): sys_users から * を選択します。最...

Linux CentOS 6.5 ifconfig が IP を照会できない問題の解決方法

最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...

HTTPSの最も優れた説明

皆さんおはようございます。しばらく記事を更新していませんでした。実は、私は流行中に1か月以上家にいて...

Select はダブルクリック dbclick イベントをサポートしていません

XML/HTML コードコンテンツをクリップボードにコピー< div クラス= "c...

あまり使われていない、または誤解されている HTML タグ 10 個

ここでは、あまり使われていない、または誤解されている 10 個の HTML タグを紹介します。あまり...