location
É moi probable que utilicemos un servidor web para servir, ademáis de páxinas web, contido estático como imaxes, vídeos ou ficheiros HTML. Estes contidos denomínanse estáticos porque o seu contido no varía nin co tempo nin depende de que usuario o solicite, como si ocurre cunha páxina PHP. Por razóns de eficiencia, é recomendable seleccionar varios directorios locais para os diferentes tipos de contido.
Tomamos como base o seguinte virtual host:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
}
No directorio /var/www temos os seguintes directorios e ficheiros:
/var/www
├── example.com
│ └── html
│ └── index.html
└── html
└── index.nginx-debian.html
A continuación, creamos un novo directorio images dentro de /var/www/example.com:
sudo mkdir /var/www/example.com/images
Descargamos unhas imaxes de proba e gardámolas no directorio images.
A continuación, editamos o ficheiro de configuración do host virtual:
sudo nano /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html;
server_name example.com;
location / {
try_files $uri $uri/ =404;
}
location /images/ {
root /var/www/example.com;
}
}
Para aplicar os cambios é necesario reiniciar o servidor:
sudo systemctl restart nginx
A continuación, móstranse algúns exemplos para comprender como funciona o servidor en base ao configurado anteriormente.
URL (solicitude)|Recurso proporcionado por NGINX (resposta)
:-|:
http://example.com |/var/www/example.com/html/index.html
http://example.com/proba.txt |/var/www/example.com/html/proba.txt
http://example.com/blog/ |/var/www/example.com/html/blog/index.html
http://example.com/blog/post.html |/var/www/example.com/html/blog/post.html
http://example.com/images |/var/www/example.com/images/index.html
http://example.com/images/jpg |/var/www/example.com/images/jpg/index.html
http://example.com/images/1.png |/var/www/example.com/images/1.png
Todas as solicitudes cuxas URI (Identificador de Recursos Uniforme) comezan con /images/ solicitarán datos do directorio /var/www/example.com/images. Se o arquivo correspondente non existe, aparecerá a mensaxe de erro. Todos os eventos NGINX cuxas URI non empezan con /images/ remítense ao directorio /var/www/example.com/html.
Supoñamos o seguinte contido no ficheiro de configuración dun host virtual:
location /images/ {
root /var/www/example.com;
}
Para o location anterior, todas os ficheiros serviranse do directorio /var/www/example.com/images, a pesar de que se indique na directiva root a ruta /var/www/example.com (sen images).