2014年1月25日土曜日

NGINXの仮想ホスト名(server_nameディレクティブ)のメモ

NGINXで仮想ホスト名(サーバ名)を指定する方法が公式のドキュメントにコンパクトにまとまっていたのでメモ。
あまり難しいことをやらない分わかりやすいですね。

マスタリングNGINX(20,21ページ)はもう少し詳しいですが、普通の使い方なら以下の完全一致、ワイルドカード、正規表現の内容で十分かもしれません。


サーバ名

http://nginx.org/ja/docs/http/server_names.html

以下引用です。

サーバ名解決の優先順位

  1. 完全一致名
  2. アスタリスクで始まるワイルドカード名: *.example.org
  3. アスタリスクで終わるワイルドカード名: mail.*
  4. 設定ファイル内の順序での正規表現

ワイルドカード

・ワイルドカード名にはそのサーバ名の最初か最後のみ、そしてドットに隣接したところのみにアスタリスクが含まれます。
・サーバ名 www.*.example.org や w*.example.org は無効です。
・特別なワイルドカードの形式 .example.org は、完全一致名 example.org とワイルドカード名 *.example.org の両方にマッチさせるように利用できます。

正規表現

サーバ名は正規表現を使用して、例えば ~^www\..+\.example\.org$ や ~^w.*\.example\.org$ として指定することができます。

ワイルドカードで有効なサーバ名の指定方法

server_name *.example.org
server_name example.*
server_name ~^www\..+\.example\.org$
server_name ~^w.*\.example\.org$

無効なサーバ名の指定方法

server_name www*.example.org
server_name www.*.example.org

サーバ名未定義のリクエストを防ぐには、_のように無効なドメイン名を使います。

サーバ名未定義のリクエストの処理を防ぐ

http://nginx.org/ja/docs/http/request_processing.html#how_to_prevent_undefined_server_names
server {
    listen       80  default_server;
    server_name  _;
    return       444;
}
シンプルでわかりやすいルールですね。
仕事ではApacheを使うことが多いですが、個人的にはNGINXいいですね。

0 件のコメント:

コメントを投稿