index
Os ficheiros índice son aqueles que se mostran cando a URI non especifica ningún ficheiro. Por exemplo, supoñamos que accedemos á seguinte URL:
http://example.com/document.docx
Neste caso, estamos especificando que solicitamos un ficheiro: document.docx.
Agora supoñamos que solicitamos a seguinte URL:
http://example.com
Neste segundo exemplo non estamos especificando ningún ficheiro. Nestes casos é cando entran en xogo os ficheiros índice. Habitualmente, por convención, móstrase un index.html.
Selección de ficheros índice
Para mostrar o funcionamento dos ficheiros índice, partimos do seguinte host virtual:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
}
Supoñamos as seguintes URLs:
http://example.com/http://example.com/images/http://example.com/data/docs/
Podemos ver que todas as URLs anterior rematan cun /. Este tipo de peticións, NGINX trátaas como unha solicitude dun directorio e tenta buscar un ficheiro índice dentro do directorio.
Para as URLs mostradas anteriormente, téntase buscar nos seguintes directorios:
| URL | Directorio no servidor |
|---|---|
http://example.com/ | /var/www/example.com/html/index.html |
http://example.com/images/ | /var/www/example.com/html/images/index.html |
http://example.com/data/docs/ | /var/www/example.com/html/data/docs/index.html |
No caso de non atopar o ficheiro indicado na directiva index, NGINX devolve un error 404.
Pódese indicar máis dun ficheiro índice. Nese caso, buscaríaos na orde indicada.
location / {
index index.html index.htm index.html;
}
Redireccións internas
Para devolver un ficheiro índice, NGINX comproba a súa existencia e fai unha redireción interna ao URI obtido ao engadir o nome do ficheiro índice coma sufixo ao URI orixinal. A redireción interna conleva unha nova busca doutra localización, e pode rematar noutro bloque location coma no seguinte exemplo:
location / {
root /data;
index index.html index.php;
}
location ~ \.php {
fastcgi_pass localhost:8000;
#...
}
No exemplo anterior, se o URI é unha petición a /path/ e se dán as seguinte condicións:
/data/path/index.htmlnon existe/data/path/index.phpsi existe
A redireción interna a /path/index.php procésase no segundo bloque location dando coma resultado unha petición ao proxy.
Listado do contido dos directorios
Se no lugar de mostrar un ficheiro índiece, queremos xerar un listado co contido (ficheiros e directorios) do directorio solicitamos, podemos definir a directiva autoindex:
location /images/ {
autoindex on;
}