こんにちは、鯨井貴博@opensourcetechです。
本日は、Virtualbox上の仮想PCで動いでいるCentOS6.6(64ビット)を使って、
Nginxのバーチャルホストをやってみようと思います。
ちなみに、Nginxのバージョンは本日時点で最新である1.7.10を使用しました。
uname -r & cat /etc/redhat-releaseでOS情報が確認出来ます。

yumでNginxをインストール出来るようにする為、
/etc/yum.repos.dにレポジトリ情報を追加します。
cd /etc/yum.repos.d
vi nginx.repo
nginx.repoの内容
-------
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/6/$basearch
gpgcheck=0
enabled=1

そして、nginxをyumでインストール。
yum install nginx


続いて、バーチャルホストの設定を行います。
設定ファイルは、/etc/nginx/conf.dディレクトリ内に作成します。
www.test.local用に、test.conf
www.example.local用に、example.conf
www.sample.local用に、sample.confを作成します。

それぞれのファイルは以下のようになっており、
違いはserverブロックのserver_nameと、
locationブロックのrootになります。
test.conf
-------
server {
server_name www.test.local;
location / {
root /usr/share/nginx/test;

example.conf
-------
server {
server_name www.example.local;
location / {
root /usr/share/nginx/example;

sample.conf
-------
server {
server_name www.sample.local;
location / {
root /usr/share/nginx/sample;

そして、それぞれのドキュメントディレクトリ(root設定の場所)を作成の上、
その中にindex.htmlを作成します。

その後、Nginxの起動。
service nginx start
また、netstat -tan | grep 80やps aux | grep nginxで起動確認もしておきます。

また、必要に応じてiptablesの設定も行います。
iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
iptables -L --line-numbers

あとは、各ホスト名に対する名前解決がクライアントで出来れば、
以下のようにそれぞれのWebページ(index.html)が表示されます。



なお、該当するホスト名ではないものでアクセスがあった場合は、
nginxが一番最初に読み込んだ設定のホストが使用されます。
つまり今回の設定では/etc/nginx/conf.dには以下のような設定ファイルがあり、
アルファベット順でいくと「default.conf」が一番最初になるので、
その内容が使用されます。

特定のホストを設定したい場合は、
listenに「default_server」と追加してやればOKです。

余談ではありますが、
バーチャルホストでどのホスト名に対するアクセスかは、
クライアントからのアクセス情報に含まれるHostヘッダーの情報が使用されます。
