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; } }