web-dev-qa-db-fra.com

Configuration de Nginx pour intercepter tous les vhosts non gérés

Si j'ai déjà un groupe d'hôtes virtuels, comment puis-je créer un hôte virtuel pour gérer les demandes qui ne correspondent à aucun des hôtes virtuels? (c'est-à-dire l'accès par IP, un autre domaine lié à IP, .etc .etc)

41
SandyD

nom du serveur _; et default_server sur la configuration d'écoute sont ce que vous recherchez.

Exemple:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}
52
Brian P

Si vous utilisez SSL, alors vous avez besoin d'une plomberie supplémentaire pour un certificat et une clé default_server (qui peuvent être auto-signés).

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    return 404; # or whatever
}

Nginx essaiera d'accepter la connexion SSL sur un serveur par défaut IP/port correspondant. Si un tel serveur manque cert/clé, nginx abandonnera la connexion. Il n'essaiera pas d'autres serveurs. N'oubliez donc pas cert/key.

5
andreycpp
server {
  listen 80 default_server;
  listen 443 ssl default_server;
  listen [::]:80 default_server;
  listen [::]:443 ssl default_server;

  server_name _;
  root /path/to/default;
}

Les entrées concernent respectivement le port 80 (HTTP), le port 443 (HTTPS), le port 80 IPv6 et le port 443 IPv6.

Vous pourriez envisager d'ajouter log_not_found off; pour éviter d'ajouter une entrée de journal pour la page introuvable.

3
Zaz