Come configurare nginx per redirect tutte le richieste da alias di dominio al dominio principale?

Ho un server nginx che risponde a diversi domini e desidero redirect tutte le richieste al dominio principale.

Esempio: sito web che risponde per xxx xxx.example.com yyy.example.com $hostname per http e https .

Voglio configurare il server in modo che tutte le richieste agli altri nomi di dominio verranno reindirizzate a xxx.example.com .

  • Come build le estensioni PHP 5.3 mancanti su CentOS 5.6
  • È ansible invertire il proxy di un'image e non avere consumare la width di banda sul proxy?
  • Come posso get LAMP in esecuzione con Debian?
  • Qual è la differenza tra una cache, una cache avanzata e una cache vuota?
  • la risposta di iis 7 rallenta anche su localhost con un file di text
  • PHP non viene analizzato in apache2, il module php è installato e abilitato
  • Quali sarebbero coinvolti nel passaggio di un sito come lo stackoverflow a https?
  • nginx 404 invece di 403 per la directory vuota
  • 3 Solutions collect form web for “Come configurare nginx per redirect tutte le richieste da alias di dominio al dominio principale?”

    Penso che qualcosa su queste linee dovrebbe funzionare:

     set $primary_domain "xxx.example.com"; if ($host != $primary_domain) { rewrite ^ $scheme://$primary_domain permanent; } 

    Il modo più efficiente e pulito per farlo è quello di configurare due blocchi server separati {}, uno per eseguire reindirizzamenti e un altro (con nome canonico) per gestire le richieste.

    Configurazione di esempio:

     server { listen 80; listen 443 ssl; server_name xxx yyy.example.com $hostname; ssl_certificate ... ssl_certificate_key ... return 302 $scheme://xxx.example.com$request_uri; } server { listen 80; listen 443 ssl; server_name xxx.example.com; ssl_certificate ... ssl_certificate_key ... ... } 

    Documentazione:

    Ecco una variante sulla risposta di Brenton Alker, usando la variabile $server_name per riutilizzare il valore della direttiva server_name .

      server_name primary.tld secondary.tld; if ($host != $server_name) { rewrite ^ $scheme://$server_name permanent; } 

    O, per mantenere i parametri di query:

      server_name primary.tld secondary.tld; if ($host != $server_name) { rewrite ^/(.*) $scheme://$server_name/$1 permanent; } 

    Qui $server_name riferisce al nome del server primario, che è il primo nome nella direttiva server_name , mentre $host fa riferimento al nome host specificato nella richiesta HTTP.

    Si noti che l'istruzione if in configuration nginx non sempre fa quello che ti aspetteresti e il suo utilizzo è scoraggiato da alcuni. Vedi anche https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/

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