Come posso configurare un block di posizione per restituire sempre un singolo file in nginx?

Nella mia applicazione voglio che la posizione "/" restituisca un file static index.html, voglio "/ statico" per servire file statici da una cartella e voglio che tutte le altre richieste restino 404 NON TROVATE. In un secondo momento ricondisco tutte le altre richieste a un server WSGI.

Questa è la mia configuration:

  • Disabilitare il Timeout di FastCGI in Nginx?
  • Come modificare l'URL intranet WordPress
  • nginx autoindex ricevente 403 Proibito
  • nginx HTTPS che serve con la stessa configuration di HTTP
  • Come posso impostare in sicurezza i parametri di configuration di Postfix * Restrictions con i whitelist e blacklist?
  • Aumenta il valore di LimitRequestFieldSize in Apache
  • # Dev server. server { listen 1337; charset UTF-8; location / { rewrite ^ static/index_debug.html break; } location /static { alias /home/tomas/projects/streamcore/static; } } 

    La cartella statica funziona perfettamente, ma "/" restituisce 404 NON TROVATO. Ho anche provato:

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

    Nel block di posizione, ma che restituisce 500 ERRORE INTERNO SERVER. Sembra che l' alias non ama i singoli file. Inoltre ho provato:

     try_files static/index_debug.html; 

    Ma questo arresta il server dall'inizio dell'errore "numero non valido di argomenti nella direttiva try_files". Apparentemente try_files richiede di provare più di un file, che non è il comportmento che cerco.

    Quindi la mia domanda è: come faccio a configurare un block di posizione per restituire sempre un file statico?


    EDIT: Ho visto da altre risposte che l' alias dovrebbe accettare un solo file come argomento, quindi ho provato:

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

    Ma ho ancora solo 500 ERRORE INTERNO SERVER. Il log degli errori per la richiesta "/" dice:

      [alert] 28112 # 0: * 7 "/home/tomas/projects/streamcore/static/index_debug.htmlindex.html" non è una directory 

    Perché sta cercando di aprire "index_debug.htmlindex.html"? Non utilizzo la direttiva index nessuna parte.

  • Disabilitazione delle avvertenze e delle notifiche di Deprecation di PHP
  • Priorità bassa della memory
  • Come elencare tutti i lavori pianificati più vicini in bacole bconsole
  • linux distribuito file system su consulenza WAN
  • Disabilita IP sul ponte
  • Forzare il traffico IP locale ad un'interface esterna
  • One Solution collect form web for “Come posso configurare un block di posizione per restituire sempre un singolo file in nginx?”

    Basta testare questo e funziona per me:

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

    Il file /tmp/root/static/index_debug.html esiste naturalmente 🙂

    Posso colpire qualsiasi URL e ho solo la pagina statica.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.