Nginxにデフォルトのバーチャルホストを設定する

家庭内 LAN 向けにバーチャルホストをたてようというのが動機。現状では、サーバに HTTP でアクセスすると Sinatra アプリが応答してしまっていた。
設定方法は↓このページが参考になった。

 cf. nginxでデフォルトのバーチャルホストを設定する方法 – Linux入門

答えは簡単で、listen ディレクティブに default_server と書き足すだけでいい。これがないと、最初に読み込まれたバーチャルホストがデフォルトになるので、今まで Sinatra アプリのサーバが応答していたってわけだ。

/etc/nginx/sites-available に nightschool という名前で設定ファイルを作って、/etc/nginx/sites-enabled 以下にシンボリックリンクを作成。作った設定ファイルはこれ。

server {
    # port
    listen 80 default_server;

    # server name
    server_name nightschool;

    # document root
    root /var/www/html;

    # index
    index index.php index.html index.htm;

    # log files
    access_log /var/log/nginx/nightschool/access.log combined;
    error_log /var/log/nginx/nightschool/error.log warn;
}

ドキュメントルートとログファイルのためのディレクトリを作って、ドキュメントルートには index.html ファイルをおいた。

<html>
  <body>
    <h1>Hello, welcome!</h1>
    This is nightschool.
  </body>
</html>

あとは Nginx を再起動して完了。

takatoh@nightschool $ sudo service nginx stop
takatoh@nightschool $ sudo service nginx start

確認のために Windows PC からアクセスしたところ、ちゃんと index.html の内容が表示された。

default-vhost

Windows7のhostsファイルに書き込む方法

hosts ファイルは C:\Windows\System32\drivers\etc にあるんだけど、普通にやったんでは権限がないとか言われて保存できない。管理者権限を持ったユーザーでも。

どうやるのか調べた結果、次のとおりにする。

  1. スタートメニューから、メモ帳を「管理者として実行」
  2. メモ帳のファイルメニューから hosts ファイルを開く
  3. 編集して上書き保存

このやり方だとちゃんと保存できる。