Comment configurer un bloc d'location pour toujours renvoyer un seul file dans nginx?

Dans ma request, je veux que l'location "/" renvoie un file index.html statique, je veux que "/ static" serve des files statiques à partir d'un dossier et je souhaite que toutes les autres requests renvoient 404 NOT FOUND. Plus tard, je vais redirect toutes les autres requests vers un server WSGI.

Ceci est actuellement ma configuration:

# Dev server. server { listn 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 également essayé:

 alias /home/tomas/projects/streamcore/static/index_debug.html; 

Dans le bloc de localization, mais qui renvoie 500 ERREURS DU SERVEUR INTERNE. Il semble que alias n'aime pas les files uniques. De plus, j'ai essayé:

 try_files static/index_debug.html; 

Mais cela empêche le server de commencer par l'erreur "nombre d'arguments invalide dans la directive try_files". Apparemment, try_files vous oblige à essayer plus d'un file, ce qui n'est pas le comportement que je search.

Donc, ma question est: Comment puis-je configurer un bloc d'location pour toujours renvoyer un file statique?


EDIT: J'ai vu d'autres réponses que alias devrait effectivement accepter un seul file comme argument, alors j'ai essayé:

 location = / { alias /home/tomas/projects/streamcore/static/index_debug.html; } 

Mais je ne reçois encore que 500 ERREUR DE SERVEUR INTERNE. Le journal des erreurs pour la requête "/" indique:

  [alerte] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" n'est pas un directory 

Pourquoi essaie-t-il d'ouvrir "index_debug.htmlindex.html"? Je n'utilise pas la directive index partout.

Juste testé ceci et ça marche pour moi:

 server { root /tmp/root; server { listn 8080; location /static { try_files $uri =404; } location / { rewrite ^ /static/index_debug.html break; } } } 

Le file /tmp/root/static/index_debug.html existe bien entendu 🙂

Je peux toucher n'importe quelle URL et je viens d'get la page statique.