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.

One Solution collect form web for “Comment configurer un bloc d'location pour toujours renvoyer un seul file dans nginx?”

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.

  • Test de gzip pour les users qui accèdent au site via proxy avant
  • Firefox 42 ne peut pas accéder à un site SSL
  • installation de nginx + php + mysql sur Windows
  • Je reçois "ERR_EMPTY_RESPONSE" sur mon site lorsque j'utilise le proxy
  • Conversion spéciale de protection nginx hotlink de la règle d'application Apache .htaccess
  • Nginx proxy_set_header Host pour la gestion RPC
  • Est-il possible de rendre les servers de cache de charge Nginx et de cache en "parallèle"?
  • GitLab & nginx: 502
  • Comment faire pour que le travail intelligent de transport git Smart sur nginx?
  • Comment configurer le proxy inverse nginx pour tous les sous-domaines?
  • Les liens longs dans NGINX provoquent une redirection
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.