.log

業務系ITナンデモ屋の日々得ては失われていく知識を書き留めておくメモ。
日記は苦手ですが将棋ネタなんかも書いています。内容は無保証・無責任です。

nginxのserver_nameで複数ドメイン運用


以前の「ApacheのNameVirtualHostを使う」記事のnginx版です。

いわゆるVirtualHostは、nginxのserverディレクティブに対応しています。このディレクティブ内の server_name が今回の肝になります。いろいろな記述ができて便利です。
  • 固定名
        aaa.com
  • ワイルドカード
        *.aaa.com
  • 正規表現 (~で始めると正規表現になる。PECL互換で、部分文字列の取り出しも可能)
        ~^www\d?\.aaa\.com$

    詳細:http://nginx.org/en/docs/http/server_names.html

なお、IPアドレスでのアクセスやHOSTヘッダーを送ってこない(非常に)古いブラウザでのアクセスの場合、""と記述された空のserver_nameにマッチします。

説明で使用するサンプルは、基本的にはApacheのときと同じですが、bbb.netだけ「www.bbb.net」と「www1.bbb.net」〜「www3.bbb.net」でもアクセスできるようにしてあります。server_nameの設定例として参考にしてください。

設定するドメイン (サーバー上のDocumentRootにするパス と ログ出力先パス)
  • aaa.com ( /www/aaa.com   /logs/aaa.com )
  • bbb.net ( /www/bbb.net   /logs/bbb.net )
  • ccc.org ( /www/ccc.org   /logs/ccc.org )
  • それ以外 (/www/unknown   /logs/unknown)
この設定が以下になります。
server {
    server_name  "" localhost;
    access_log  /logs/unknown/access.log main;
    error_log  /logs/unknown/error.log warn;

    location / {
        root /www/unknown;
    }
}

server {
    server_name         aaa.com;

    access_log  /logs/aaa.com/access.log  main;
    error_log   /logs/aaa.com/error.log   warn;

    location / {
        root /www/aaa.com;
    }
}

server {
    server_name bbb.net www.bbb.net www1.bbb.net www2.bbb.net www3.bbb.net;
    # server_name ~^(www[1-3]?\.)?bbb\.net$;  # 正規表現で書くとこんな感じ

    access_log  /logs/bbb.net/access.log  main;
    error_log   /logs/bbb.net/error.log   warn;

    location / {
        root /www/bbb.net;
    }
}

server {
    server_name         ccc.org;

    access_log  /logs/ccc.org/access.log  main;
    error_log   /logs/ccc.org/error.log   warn;

    location / {
        root /www/ccc.org;
    }
}

記述先はnginx公式リポジトリからインストールした場合、/etc/nginx/conf.d/default.conf になります。この設定ファイルを編集しても良いし、このフォルダーへ*.confな名前の設定ファイルを別に置いても良いです。設定ファイルの構造は、設定ファイルの入り口となっている /etc/nginx/nginx.conf から追ってみてください。Apacheと違って、シンプルなので何をやっているかは、すぐわかると思います。ちなみに、この設定ファイル中では条件分岐などを含む簡易的なスクリプトを記述できたりします。

自分の場合、基本的にnginxをリバースプロキシの用途でしか使っていないので、nginxが直接コンテンツを裁く使い方には縁がありません。nginx経由でバックエンドサーバーを使う記事は改めて書きます。



コメントする

名前
 
  絵文字
 
 
公開ソフトウェア

TILES

iGoogle、Feedly、Netvibesのようなクラウド型RSSリーダーをローカルPC上に構築できるフリーソフト。
プロフィール
記事検索
  • ライブドアブログ