web-dev-qa-db-fra.com

Comment servir un répertoire de fichiers statiques à un certain emplacement avec nginx?

J'ai des fichiers à /Users/me/myproject et je veux les servir à http://stuff.dev/something en utilisant une simple configuration nginx. Dans le dossier /Users/me/myproject se trouve quelque chose comme:

index.html
scripts/
    app.js
styles/
    style.css

Donc, je veux vraiment pouvoir accéder à http://stuff.dev/something, http://stuff.dev/something/scripts/app.js etc.

Dans mon Nginx conf, j'ai ceci:

server {
  listen      80;
  server_name stuff.dev;

  location /something {
    index  index.html;
    root /Users/me/myproject;
  }
}

Cela ne fonctionne pas (je reçois un 404 si j'essaie d'accéder aux URL ci-dessus), mais si j'essaie d'exécuter exactement la même configuration, mais en utilisant location / { au lieu de location /something {, cela fonctionne bien. Comment puis-je servir ce répertoire de fichiers de manière statique mais sur un chemin plutôt que sur l'emplacement racine? Est-ce que je dois avoir les fichiers dans un dossier appelé "quelque chose" comme /Users/me/myproject/something pour que cela fonctionne? Si oui, y a-t-il un moyen de contourner cela?

12
rhodesjason

J'ai essayé ceci sur mon VPS, et utiliser la commande alias a fonctionné pour moi:

server {
  listen 80;
  server_name   something.nateeagle.com;

  location /something {
    alias /home/neagle/something;
    index index.html index.htm;
  }
}
18
Nate

Je pense que vous pouvez accomplir cela avec la directive try_files , un résultat similaire devrait fonctionner:

server {
  listen      80;
  server_name stuff.dev;

  location /something {
    root /Users/me/myproject;
    index  index.html;

    try_files /Users/me/myproject/$uri /Users/me/myproject/$uri/ =404
  }
}

Ce peut-être vous obliger à déplacer les fichiers sous / Utilisateurs/moi/mon projet/quelque chose, et si vous ne pouvez vous en tirer, vous devrez essayer quelque chose comme ce qui suit pour le emplacement:

  location ~ /something(.*) {
    root /Users/me/myproject;
    index  index.html;

    try_files /Users/me/myproject$1 /Users/me/myproject$1/ =404
  }
0
awinder