以前の「ApacheのNameVirtualHostを使う」記事のnginx版です。
いわゆるVirtualHostは、nginxのserverディレクティブに対応しています。このディレクティブ内の server_name が今回の肝になります。いろいろな記述ができて便利です。
詳細: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にするパス と ログ出力先パス)
記述先はnginx公式リポジトリからインストールした場合、/etc/nginx/conf.d/default.conf になります。この設定ファイルを編集しても良いし、このフォルダーへ*.confな名前の設定ファイルを別に置いても良いです。設定ファイルの構造は、設定ファイルの入り口となっている /etc/nginx/nginx.conf から追ってみてください。Apacheと違って、シンプルなので何をやっているかは、すぐわかると思います。ちなみに、この設定ファイル中では条件分岐などを含む簡易的なスクリプトを記述できたりします。
自分の場合、基本的にnginxをリバースプロキシの用途でしか使っていないので、nginxが直接コンテンツを裁く使い方には縁がありません。nginx経由でバックエンドサーバーを使う記事は改めて書きます。
いわゆるVirtualHostは、nginxのserverディレクティブに対応しています。このディレクティブ内の server_name が今回の肝になります。いろいろな記述ができて便利です。
- 固定名
- ワイルドカード
- 正規表現 (~で始めると正規表現になる。PECL互換で、部分文字列の取り出しも可能)
詳細: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経由でバックエンドサーバーを使う記事は改めて書きます。