nginx: la direttiva error_page viene ignorata in silenzio

Sto cercando di restituire una pagina di errore personalizzata 400 per le richieste non HTTPS in nginx. Sono nuovo a nginx, ma ho letto molte pagine di esempi su pagine di errore personalizzate e niente sembra funzionare per me. I miei config:

server { listen 80; error_page 400 /400.html; location = /400.html { root /var/www/html; } return 400; } 

Il return sta funzionando, perché se cambio il codice (ad esempio a 401 o 500) ottengo la giusta pagina di errore di default di nginx. So che il file esiste, perché se estrai il rientro , servirò direttamente la mia pagina 400.html senza alcun problema. Ma niente che ho provato ha provocato la mia pagina personalizzata che viene visualizzata quando restituisco il codice di errore.

  • Come utilizzare fail2ban per analizzare il registro di accesso Nginx per contare gli indirizzi 404 e il ban IP?
  • Servire un fastcgi attraverso nginx
  • Server Tomcat dietro il proxy inverso di nginx - come bloccare l'accesso diretto al server?
  • PUT al file statico in nginx
  • risposte nel bilanciamento del carico nginx
  • nginx proxy_cache: limita le richieste parallele per lo stesso URL
  • Che cosa mi manca?

    Aggiornamento: Altre varianti che ho cercato senza alcun risultato:

     server { listen 80; error_page 400 /400.html; location = /400.html { root /var/www/html; } return 400; } server { listen 80; root /var/www/html; error_page 400 /400.html; location = /400.html { allow all; } return 400; } server { listen 80; root /var/www/html; error_page 400 /400.html; return 400; } 

  • Apache: come impostare la pagina di errore personalizzata 401 e salvare il comportmento originale
  • Distriggerszione della risposta agli errori del server IIS 7.5 per i codici di stato HTTP 5xx e 4xx
  • customErrors = "RemoteOnly" non funziona correttamente in Server 2008
  • la pagina di errore personalizzata di nginx 404 per l'host virtuale
  • Errore di configuration IIS7 e errori remoti
  • Apache: richiesta insicura inviata per proteggere la port ... desidera redirect
  • One Solution collect form web for “nginx: la direttiva error_page viene ignorata in silenzio”

    Ho trovato questa domanda su Stackoverflow che realizza quello che stavo cercando.

    Suppongo per qualunque motivo anche se un return funziona all'interno di un block di server , non rispetta alcuna direttiva di error_page . Questo potrebbe essere un bug o un comportmento intenzionale che non capisco. La soluzione è quella di mettere il return all'interno di un block di posizione :

     server { listen 80; root /var/www/html; error_page 400 /400.html; location = /400.html { internal; } location / { return 400; } } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.