Configurez nginx avec plusieurs emplacements avec différents dossiers racine sur le 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/ amènerait 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

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 wiki nginx explique mieux la différence entre root et alias:

Notez qu’il peut sembler similaire à la directive racine à première vue, mais la racine du document ne change pas, juste le chemin du système de fichiers utilisé pour la requête. La partie emplacement de la demande est supprimée dans la requête Nginx.

Le système de directives de localisation est

Comme vous voulez transférer toutes les requêtes qui démarrent /static et vos données présentes dans /var/www/static

Donc, 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 First path: /var/www

 location  { root ; } 

Alors, voyons ce que vous avez commis et quelles sont vos solutions

Ton erreur :

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

Vos solutions:

 location /static { root /web/test.example.com; } 
 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