Saltar al contenido principal

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:

/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;
}
}

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
/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.

Construción da ruta no servidor a partir da URL

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).