serverブロック
1つの待ち受けを1つのブロックで書く
server ブロックは「どの番号で待ち、どの名前で呼ばれたら、どこのファイルを返すか」をひとまとめにした単位です。最小の形はこれだけです。
server {
listen 8081;
server_name mysite.local;
root /var/www/mysite;
index index.html;
}4行それぞれに役目があります。
listen は待ち受ける番号です。第1章で見たポートがここに出てきます。server_name は、リクエストのヘッダーに書かれてくるホスト名です。1台のサーバーで複数のサイトを配信するとき、nginx はこの名前を見て、どの server ブロックで応えるかを選びます。
root が配信元のディレクトリで、第1章の /var/www/html に相当します。index は、URL がディレクトリで終わったときに探すファイル名です。
自分のサイトに専用の場所を用意する
これまでサイトは /var/www/html に置いていました。あそこは nginx を入れると付いてくるデフォルトの置き場で、他のものと混ざります。自分のサイトには自分のディレクトリを用意します。
mkdir -p /var/www/mysite
cp -r /root/mysite/. /var/www/mysite/第1章で覚えた末尾のドットが、ここでも効いてきます。
置いて、リンクを張って、効かせる
前の回で見たとおり、設定の実体は sites-available に置き、sites-enabled にリンクを張って有効にします。
ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.confln -s はリンクを作るコマンドで、Linux 入門の deploy.sh でも使いました。7章のデプロイでは、この仕組みそのものが主役になります。
リンクを張ったら、設定を読み直させます。
nginx -t
systemctl reload nginxnginx -t は文法の検査です。ここで通してから reload する、という順番を必ず守ってください。壊れた設定のまま reload すると、反映されないだけでなく、次の再起動でサービスが立ち上がらなくなることがあります。この2つは次の次の回でじっくり扱います。
番号を分けて試す理由
いまデフォルトのサイトが 80 番を持っています。同じ番号に同じ server_name で2つ書くと、どちらが応えるかが曖昧になります。そこで練習の間は 8081 番で待たせ、80 番はデフォルトに残しておきます。並べて比べられるので、設定が効いているかが分かりやすくなります。
80 番へ引っ越すのは、この章のミッションで行います。
手を動かす
自分のサイト専用のディレクトリを作り、8081 番で配信する server ブロックを書いて有効にします。