こんにちは、鯨井貴博@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ヘッダーの情報が使用されます。