Dans mon application, je veux que l'emplacement "/" renvoie un fichier index.html statique, je veux que "/ static" serve des fichiers statiques à partir d'un dossier et je veux que toutes les autres demandes renvoient 404 NOT FOUND. Plus tard, je vais rediriger toutes les autres demandes vers un serveur WSGI.
C'est actuellement ma configuration:
# Dev server.
server {
listen 1337;
charset UTF-8;
location / {
rewrite ^ static/index_debug.html break;
}
location /static {
alias /home/tomas/projects/streamcore/static;
}
}
Le dossier statique fonctionne parfaitement, mais "/" renvoie 404 NOT FOUND. J'ai aussi essayé:
alias /home/tomas/projects/streamcore/static/index_debug.html;
Dans le bloc d'emplacement, mais cela renvoie 500 ERREUR DE SERVEUR INTERNE. Il semble que vous alias
n'aimiez pas les fichiers uniques. De plus, j'ai essayé:
try_files static/index_debug.html;
Mais cela empêche le serveur de démarrer avec l'erreur "nombre d'arguments non valide dans la directive try_files". Apparemment, try_files
vous devez en fait essayer plusieurs fichiers, ce qui n'est pas le comportement que je recherche.
Ma question est donc la suivante: comment configurer un bloc d'emplacement pour toujours renvoyer un fichier statique?
EDIT: J'ai vu d'autres réponses qui alias
devraient en effet accepter un seul fichier comme argument, j'ai donc essayé:
location = / {
alias /home/tomas/projects/streamcore/static/index_debug.html;
}
Mais je n'ai toujours que 500 ERREUR DE SERVEUR INTERNE. Le journal des erreurs de la demande "/" indique:
[alerte] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" n'est pas un répertoire
Pourquoi essaie-t-il d'ouvrir "index_debug.htmlindex.html"? Je n'utilise la index
directive nulle part.
location =/
404 PAS TROUVÉ, location /
j'obtiens 500 ERREUR DE SERVEUR INTERNE.
location / { return 404; }
location = / {Index /home/tomas/projects/streamcore/static/index_debug.html;}
try_files static/index_debug.html static/index_debug.html;