next up previous contents
Next: 3.1.1 コンテキスト Up: 3. Nginxの基本 Previous: 3. Nginxの基本

3.1 Nginxの基本構文

nginxでは、設定ファイルは通常 nginx.conf となり、FreeBSDでは、 /usr/local/etc/nginx/ に置かれます。

設定ファイルは、ディレクティブと言われる設定項目の集合です。各々の ディレクティブは適用範囲などを明確にするために、ブロック に分けることが出来ます。ブロックは、入れ子にすることができ(出来ない ブロックもありますが)、上位のブロックで定義された設定は、基本的に 下位(内部)のブロックにデフォルト値として引き継がれます(継承)。

    listen 80;

上の例はディレクティブの例で、ディレクティブはディレクティブ名 の 後に、一つ又は複数の値が設定できます。個々のディレクティブは、セミコロン (;) を末尾に持ちます。

次の例は、ブロックの例です。

server {
    listen 80;
    server_name test.matsue-ct.ac.jp;
}

ブロックは、基本的に上位より、 HTTPブロック, serverブロック, locationブロック が あります。その他のブロックとしては、eventブロックrootブロックがあります。

ディレクティブの listen はサーバがどのポートで待ち受けるかの指定で、 server_name は文字通りサーバの名前を意味しており、Apacheのバーチャル ホスト名に相当します。従って、nginx では server ブロックを同位の位置に 並列させるだけで、バーチャルサーバが実現します。

ブロックが入れ子になっているのが次の例です。

http {
    server {
        listen 80;
        server_name test.matsue-ct.ac.jp;
        index index.html index.htm;
        location  /  {
            try_files $uri $uri/;
        }
        location /admin/ {
            index index.php;
        }
    }
}

この場合、locationブロックが2つあり、それらはいずれも同じ server ブロック に所属しているので、server ブロックの設定がいずれの location ブロック にも適用されます(このようにある種の範囲を示す場合、 ブロックはコンテキストとも呼ばれます)。

なお、location は、URLの中のパス(及びオプション)にマッチします。 つまり、location /admin/ は、http://test.matsue-ct.ac.jp/admin/ にマッチし、それ以外のこのサーバへのアクセスは location / で処理されます。nginx では、この location が非常に重要になってきますが、 基本的には最長一致した location ブロックがヒットするのが原則です(更に 、複雑な一致則もあります)。





Noriyo Kanayama