Come posso bloccare le richieste con l'impostazione errata dell'intestazione host?

Uso nginx per servire il mio sito web. Vorrei bloccare tutte le richieste che vengono fornite con un'intestazione "Host" HTTP che non corrisponde al dominio del mio sito.

Per essere più concreti, il mio nginx.conf contiene questi due blocchi server:

server { # Redirect from the old domain to the new domain; also redirect # from www.newdomain.com to newdomain.com without the "www" server_name www.olddomain.com olddomain.com www.newdomain.com; listen 80; return 301 $scheme://newdomain.com$request_uri; } server { server_name newdomain.com localhost; listen 80; # Actual configuration goes here... } 

Vorrei bloccare (vale a dire "restituire" un codice di stato 444) qualsiasi traffico il cui Host non sia www.olddomain.com, olddomain.com, www.newdomain.com o newdomain.com. Come posso fare questo?

  • Come eseguire questa configuration di posizione di Nginx
  • Non è ansible accedere a phpmyadmin con nginx sotto debian "Nessun file di input specificato".
  • Messaggio della directory Nginx
  • Alternative a Apache
  • Ho installato vestacp, ma non posso accedere al pannello di controllo
  • Nginx o Apache come server web davanti a Tomcat (applicazione Java)?
  • nginx: nessun permesso di bind la port 8090 ma si lega a 80 e 8080
  • Dev'essere rimosso `keepalive_timeout` dalla configuration Nginx?
  • One Solution collect form web for “Come posso bloccare le richieste con l'impostazione errata dell'intestazione host?”

    Definire un server predefinito

    se non si definisce esplicitamente un server predefinito, nginx implicitamente utilizza il server di prima ricerca . quindi, creare un block server per bloccare gli host ignoti :

     server { listen 80 default_server; return 444; } 

    (no non è necessario aggiungere un nome_server – in quanto non sarà mai una corrispondenza).

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