Nginxでマルチドメイン(仮想ホスト)な環境の構築

設定ファイルの確認

/etc/nginx/nginx.confinclude /etc/nginx/sites-enabled/*;の記述があるか確認しておく
この設定が書かれていると/etc/nginx/sites-enabled/に書かれた設定が追加で読み込まれるようになる

マルチドメイン(仮想ホスト)の設定を書く

今回はサンプルとしてsubdomain.takeuchi.tkをホストするようにする

nano /etc/nginx/sites-available/subdomain.takeuchi.tk

server {
    listen 80;
    server_name subdomain.takeuchi.tk;

    root   /wwwroot/subdomain.takeuchi.tk;
    index  index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

のように簡単に書いてみた

簡単なコンテンツも書いておく

mkdir /wwwroot/subdomain.takeuchi.tk
chmod 755 /wwwroot/subdomain.takeuchi.tk

でコンテンツのディレクトリを作成して

nano /wwwroot/subdomain.takeuchi.tk/index.html

<!DOCTYPE html> 
<html> 
 <head> 
  <meta charset="utf-8" /> 
  <title>HTML 5 complete</title> 
  <!--[if IE]> 
   <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
  <![endif]--> 
  <style> 
   article, aside, dialog, figure, footer, header, 
   hgroup, menu, nav, section { display: block; } 
  </style> 
 </head> 
 <body> 
  <p>Hello World from subdomain.takeuchi.tk</p> 
 </body> 
</html> 

とでもしておく

/etc/nginx/sites-enabledに設定ファイルのリンクを張る

ln -s /etc/nginx/sites-available/subdomain.takeuchi.tk /etc/nginx/sites-enabled

/etc/nginx/sites-enabledにある設定ファイルだけが有効になる
ホストを止める時は/etc/nginx/sites-enabledにあるリンクを消すだけでよい

書いた設定が正しいか確認する

/etc/init.d/nginx configtest
nginx -t

設定の変更を反映する

/etc/init.d/nginx reload
nginx -s reload

正しくコンテンツを返すか確認する

マルチドメイン(仮想ホスト)が正しく動作しているか確認するには、Hostヘッダーを付加してHTTPリクエストを投げてみる

curl http://localhost/ -H "Host: subdomain.takeuchi.tk"

書いておいたコンテンツが正しく返ってきていたらOK
最後にDNSレコードを追加して振り向け先を変更する