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