nginxのlocationの挙動


ディレクトリ構造

├── endpoint_a
│   └── a
│       └── index.html
├── endpoint_b
│   └── b
│       └── index.html
└── root
    ├── a
    │   └── index.html
    └── index.html

nginxの設定

server {
    server_name example.com;
    root    /srv/example.com/public;

    location / {
        root    /srv/example.com/public/root;
        index   index.html index.htm;
    }

    location /a {
        root   /srv/example.com/public/endpoint_a;
        index  index.html index.htm;
    }

    location /b {
        root   /srv/example.com/public/endpoint_b;
        index  index.html index.htm;
    }
}

http://example.com/ にアクセスすると /srv/example.com/public/root を見る

http://example.com/a/ にアクセスすると /srv/example.com/public/endpoint_a/a を見るが /srv/example.com/public/root/a は見に行かない

http://example.com/b/ にアクセスすると /srv/example.com/public/endpoint_b/b を見る

ちょっとはまったのが/a/や/b/へアクセスするためにはaディレクトリやbディレクトリを作成してそこにドキュメントをおいてあげないとダメみたい.

まぁ 実際考えてみるとそうだよなぁっと