84 votes

Utiliser nginx pour servir des fichiers statiques à partir de sous-répertoires d'un répertoire donné

J'ai plusieurs séries de données statiques. .html sur mon serveur, et j'aimerais utiliser nginx pour les servir directement. Par exemple, nginx devrait servir un URI du type suivant :

www.mysite.com/public/doc/foo/bar.html

avec le .html qui se trouve à l'adresse /home/www-data/mysite/public/doc/foo/bar.html . Vous pouvez penser à foo comme nom de l'ensemble, et bar comme nom de fichier.

Je me demande si la configuration suivante de nginx ne ferait pas l'affaire :

server {
    listen        8080;
    server_name   www.mysite.com mysite.com;
    error_log     /home/www-data/logs/nginx_www.error.log;
    error_page    404    /404.html;

    location /public/doc/ {
        autoindex         on;
        alias             /home/www-data/mysite/public/doc/;
    }

    location = /404.html {
        alias             /home/www-data/mysite/static/html/404.html;
    }
}

En d'autres termes, toutes les demandes du modèle /public/doc/.../....html sont gérés par nginx, et si un URI donné n'est pas trouvé, une valeur par défaut de www.mysite.com/404.html est renvoyée.

119voto

cobaco Points 2981

Il devrait cependant fonctionner http://nginx.org/en/docs/http/ngx_http_core_module.html#alias dit :

Lorsque l'emplacement correspond à la dernière partie de la valeur de la directive : il est préférable d'utiliser la directive Root :

ce qui donnerait

server {
  listen        8080;
  server_name   www.mysite.com mysite.com;
  error_log     /home/www-data/logs/nginx_www.error.log;
  error_page    404    /404.html;

  location /public/doc/ {
    autoindex on;
    root  /home/www-data/mysite;
  } 

  location = /404.html {
    root /home/www-data/mysite/static/html;
  }       
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X