1. location
ブロック内にroot
とindex
を指定する場合
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /var/www/html;
index index.php index.html index.htm;
}
}
- 適用範囲: この場合、
root
とindex
の設定は、/
で始まるリクエスト、つまりすべてのリクエストに適用されます。この設定により、Nginxは/var/www/html
ディレクトリをルートディレクトリとして使用し、そこからindex.php
やindex.html
を探します。
- 特定のパスに限定:
location
ブロック内に設定されているため、この設定は他のlocation
ブロックには影響しません。たとえば、別のlocation /images/
ブロックがあった場合、そのブロックには影響を与えません。
2. location
ブロックの外にroot
とindex
を指定する場合
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
- 適用範囲:
root
とindex
がlocation
ブロックの外にある場合、これらの設定はそのserver
ブロック全体に適用されます。つまり、そのserver
ブロック内のすべてのlocation
ブロックにデフォルトのroot
とindex
の設定が適用されます。
- 全体のデフォルト設定: 他の
location
ブロック内でroot
やindex
が明示的に設定されていない限り、これらのグローバル設定が適用されます。
違いのまとめ
location
内で設定:
root
とindex
が特定のlocation
ブロックにのみ適用されます。
- 他の
location
ブロックには影響を与えません。
location
外で設定:
server
ブロック全体にデフォルトのroot
とindex
が適用されます。
server
ブロック内のすべてのlocation
ブロックでこの設定がデフォルトとして使用されます。ただし、location
ブロック内で上書きすることが可能です。
実際の使用例
location
内で設定する場合: 特定のパス(例えば、/images/
や/api/
など)で異なるルートディレクトリやインデックスファイルを使用したい場合に有効です。
location
外で設定する場合: 全体のデフォルトとしてroot
やindex
を設定し、特別な場合にのみlocation
ブロック内で上書きするという使い方が一般的です。これにより、設定が簡潔になり、メンテナンスがしやすくなります。