設定ファイルの構造

設定は1枚ではなく、束になっている

ここまで nginx を「入れて動かす」ところまでやってきました。ここからは、自分のサイトに合わせて配信のしかたを決めていきます。そのために、まず設定がどこにどう置かれているかを掴みます。

入口は1つです。

ls /etc/nginx/ # conf.d nginx.conf sites-available sites-enabled ...

nginx.conf が大元です。ただし、このファイルにサイトの設定が全部書いてあるわけではありません。中を見ると、他のファイルを読み込む指示が並んでいます。

grep -n include /etc/nginx/nginx.conf # 62: include /etc/nginx/conf.d/*.conf; # 63: include /etc/nginx/sites-enabled/*;

include は「ここに、そのファイルの中身をそのまま差し込む」という指示です。つまり実際の設定は、複数のファイルが合わさって1つの大きな設定になっています。

available と enabled という置き方

Debian 系の nginx には、少し変わった慣習があります。

sites-available は、設定の実体を置く場所です。ここに置いただけでは何も起きません。sites-enabled のほうは、読み込ませたい設定へのリンクを置く場所です。nginx.conf が読んでいるのはこちらだけなので、リンクを張ってはじめて有効になります。

ls -l /etc/nginx/sites-enabled/ # default -> /etc/nginx/sites-available/default

第1章から表示されていたあのデフォルトページは、この default が配信していました。

この分け方の利点は、設定を消さずに止められることです。公開をやめたいときはリンクを外すだけで済み、設定そのものは残ります。戻したくなったら張り直せば元通りです。2章の enable と disable によく似た考え方です。

合わさった結果を見る方法

ファイルが分かれていると、最終的にどういう設定になっているのかが分かりにくくなります。合成後の全体を出すコマンドがあります。

nginx -T

大文字の T です。include をすべて展開した状態を、どのファイル由来かの見出し付きで出してくれます。設定が思ったとおりに効かないとき、まずこれを見ます。自分が書いたはずの行がここに出てこなければ、その設定はそもそも読まれていません。

小文字の -t は文法の検査だけをするコマンドで、別物です。この2つは3章の後半でどちらも使います。

入れ子の構造

設定の中身は、波かっこで入れ子になっています。

http { server { listen 80; root /var/www/html; } }

http の中に server があり、その中に個別の指示が並びます。server が「1つの待ち受け」を表す単位で、次の回で自分の手で書きます。

手を動かす

設定の入口をたどり、include の行と、合成後の全体を記録に残します。

ヒント

  • 1. ls /etc/nginx/ で置かれているものを確かめる
  • 2. grep -n include /etc/nginx/nginx.conf の結果を /root/includes.txt に保存する
  • 3. ls -l /etc/nginx/sites-enabled/ でリンクの張られ方を見る
  • 4. nginx -T の出力を /root/nginx-full.txt に保存する

5 項目で採点します