web-dev-qa-db-fra.com

Configurez nginx avec plusieurs emplacements avec différents dossiers racine sur un sous-domaine

Je cherche à servir l'URL racine d'un sous-domaine et le répertoire d'un sous-domaine à deux dossiers différents sur mon serveur. Voici la configuration simple que j'ai et ne fonctionne pas ...

server {

    index index.html index.htm;
    server_name test.example.com;

    location / {
            root /web/test.example.com/www;
    }

    location /static {
            root /web/test.example.com/static;
    }
}

Dans cet exemple, aller à test.example.com/ apporterait le fichier d'index dans /web/test.example.com/www

et aller à test.example.com/static apporterait le fichier d'index dans /web/test.example.com/static

181
simoes

Vous devez utiliser la directive alias pour location /static:

server {

  index index.html;
  server_name test.example.com;

  root /web/test.example.com/www;

  location /static {
    alias /web/test.example.com/static;
  }

}

Le nginx wiki explique mieux que moi la différence entre root et alias:

Notez qu’elle peut sembler semblable à la directive racine à première vue, mais que la racine du document ne change pas, mais uniquement le chemin du système de fichiers utilisé pour la demande. La partie emplacement de la demande est supprimée dans les problèmes liés à la demande Nginx.

209
furq

Le système de directive de localisation est

Comme vous voulez transférer toutes les demandes qui commencent /static et vos données présentes dans /var/www/static

Ainsi, une méthode simple est séparée du dernier dossier du chemin complet, ce qui signifie

Chemin complet: _/var/www/static_

Dernier chemin: _/static_ et Premier chemin: _/var/www_

_location <lastPath> {
    root <FirstPath>;
}
_

Voyons donc ce que vous avez fait et quelles sont vos solutions

Votre erreur :

_location /static {
    root /web/test.example.com/static;
}
_

Vos solutions:

_location /static {
    root /web/test.example.com;
}
_
91
Kernelv5
server {

    index index.html index.htm;
    server_name test.example.com;

    location / {
        root /web/test.example.com/www;
    }

    location /static {
        root /web/test.example.com;
    }
}

http://nginx.org/r/root

45
VBart