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.conf

ln -s はリンクを作るコマンドで、Linux 入門の deploy.sh でも使いました。7章のデプロイでは、この仕組みそのものが主役になります。

リンクを張ったら、設定を読み直させます。

nginx -t systemctl reload nginx

nginx -t は文法の検査です。ここで通してから reload する、という順番を必ず守ってください。壊れた設定のまま reload すると、反映されないだけでなく、次の再起動でサービスが立ち上がらなくなることがあります。この2つは次の次の回でじっくり扱います。

番号を分けて試す理由

いまデフォルトのサイトが 80 番を持っています。同じ番号に同じ server_name で2つ書くと、どちらが応えるかが曖昧になります。そこで練習の間は 8081 番で待たせ、80 番はデフォルトに残しておきます。並べて比べられるので、設定が効いているかが分かりやすくなります。

80 番へ引っ越すのは、この章のミッションで行います。

手を動かす

自分のサイト専用のディレクトリを作り、8081 番で配信する server ブロックを書いて有効にします。

ヒント

  • 1. mkdir -p /var/www/mysite のあと cp -r /root/mysite/. /var/www/mysite/ で中身を置く
  • 2. /etc/nginx/sites-available/mysite.conf に server ブロックを書く。listen は 8081、root は /var/www/mysite
  • 3. ln -s で /etc/nginx/sites-enabled/mysite.conf にリンクを張る
  • 4. nginx -t で検査してから systemctl reload nginx で反映する
  • 5. curl http://localhost:8081/ で自分のサイトが返ることを確かめる

6 項目で採点します