Nginxのrootとindexディレクティブ:location内外での違いと適用範囲

1. locationブロック内にrootindexを指定する場合

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
        root   /var/www/html;
        index  index.php index.html index.htm;
    }
}




  • 適用範囲: この場合、rootindexの設定は、/で始まるリクエスト、つまりすべてのリクエストに適用されます。この設定により、Nginxは/var/www/htmlディレクトリをルートディレクトリとして使用し、そこからindex.phpindex.htmlを探します。
  • 特定のパスに限定: locationブロック内に設定されているため、この設定は他のlocationブロックには影響しません。たとえば、別のlocation /images/ブロックがあった場合、そのブロックには影響を与えません。

2. locationブロックの外にrootindexを指定する場合





server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    root   /usr/share/nginx/html;
    index  index.php index.html index.htm;
}
  • 適用範囲: rootindexlocationブロックの外にある場合、これらの設定はそのserverブロック全体に適用されます。つまり、そのserverブロック内のすべてのlocationブロックにデフォルトのrootindexの設定が適用されます。
  • 全体のデフォルト設定: 他のlocationブロック内でrootindexが明示的に設定されていない限り、これらのグローバル設定が適用されます。

違いのまとめ

  • location内で設定:
    • rootindexが特定のlocationブロックにのみ適用されます。
    • 他のlocationブロックには影響を与えません。
  • location外で設定:
    • serverブロック全体にデフォルトのrootindexが適用されます。
    • serverブロック内のすべてのlocationブロックでこの設定がデフォルトとして使用されます。ただし、locationブロック内で上書きすることが可能です。

実際の使用例

  • location内で設定する場合: 特定のパス(例えば、/images//api/など)で異なるルートディレクトリやインデックスファイルを使用したい場合に有効です。
  • location外で設定する場合: 全体のデフォルトとしてrootindexを設定し、特別な場合にのみlocationブロック内で上書きするという使い方が一般的です。これにより、設定が簡潔になり、メンテナンスがしやすくなります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です