Pour mon serveur NGINX, j'ai un serveur virtuel configuré juste pour diffuser du contenu statique. En ce moment, j'essaie de le configurer pour que les images aient une date d'expiration. Cependant, lorsque je crée une directive d'emplacement pour cela, tout se traduit simplement par un 404.
Ma configuration ressemble maintenant à ceci:
/srv/www/static.conf
server {
listen 80;
server_name static.*.*;
location / {
root /srv/www/static;
deny all;
}
location /images {
expires 1y;
log_not_found off;
root /srv/www/static/images;
}
}
Remarque, ce fichier est inclus à partir de /etc/nginx/nginx.conf, dans une directive http
Je suis en train d'accéder à l'image, à, disons ... static.example.com/images/screenshots/something.png
. Effectivement, l'image existe également à /srv/www/static/images/screenshots/something.png
. Cependant, aller à cette adresse ne fonctionne pas et me dit simplement 404 Not Found .
Cependant, si je supprime location /images
et modifie location /
ce qui suit ...
location / {
root /srv/www/static;
}
Ça marche! Qu'est-ce que je fais mal ici?
la source
root
intérieurlocation
est une mauvaise pratique, comment se fait-il qu'ils le donnent eux-mêmes dans alias docs / http / ngx_http_core_module.html # ? (voir où il est dit " il vaut mieux utiliser la directive racine à la place ") CORRECTION : D'accord, il semble que ce qui ne va pas est de définir la racine principale dans un emplacement, pas n'importe quelle racine