next up previous contents
Next: 6.3.3 最適化 Up: 6.3 サーバー名 Previous: 6.3.1 ワイルドカードと正規表現

6.3.2 優先順位

ワイルドカード及び正規表現を利用した場合、どれが採用されるかについての 優先順位があり、以下の順になります。

  1. 名前の完全一致
  2. 最長のワイルドカードから始まる名前との一致
    *.test.jp
  3. 最長のワイルドカードで終わる名前との一致
    www.test.*
  4. 最初に一致した正規表現の名前
    設定ファイルに記載された順に検索される

    server {  server_name www.test.jp; ... }
    server {  server_name *.jp; ... }
    server {  server_name *.test.jp;  ... }
    server {  server_name www.test.*;  ... }

従って、上の例の場合、www.test.jp との一致が最優先され、 次に、www2.test.jp については、2番目よりも3番目の ワイルドカード名の方が長いので、3番目に一致します。最後に、 www.test.com が4番目のサーバブロックに一致します。

    server {  server_name ~^www[0-9]*\.test\.jp$; ... }
    server {  server_name ~test\.jp$; ... }
    server {  server_name ~^[a-zA-Z0-9]+.test.jp;  ... }

上は正規表現についての例ですが、2番目の書き方は問題があります。 何故ならば、^ ga がないために、後ろ test.jp で終わる全てのサーバ名にマッチ するために、その後ろの3番目のサーバには決してマッチすることが ありません。このような場合には、2番目と3番目を入れ替える必要があり、 正規表現で複数のサーバを記述する場合には、特別のものから、 一般的なものへと並べる必要があります。



Noriyo Kanayama