46 votes

Définir Nginx pour capturer tous les hôtes virtuels non gérés

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

59voto

avery Points 11

Server_name _; et default_server dans la configuration listen sont ce que vous recherchez.

Exemple:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (ou n'importe où)    

}

6voto

andreycpp Points 649

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

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate ;
    ssl_certificate_key ;
    return 404; # ou autre chose
}

Nginx essaiera d'accepter une connexion SSL sur un serveur par défaut correspondant à l'adresse IP/au port. Si un tel serveur n'a pas de certificat/clé, nginx abandonnera la connexion. Il ne tentera pas d'autres serveurs. N'oubliez donc pas le certificat/clé.

3voto

Zaz Points 773
serveur {
  écouter 80 serveur par défaut;
  écouter 443 ssl serveur par défaut;
  écouter [::]:80 serveur par défaut;
  écouter [::]:443 ssl serveur par défaut;

  nom du serveur _;
  racine /chemin/vers/par/défaut;
}

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

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

1voto

Macha Points 249

Si vous avez des directives listen avec des adresses IP explicites répertoriées, vous devrez également inclure ces mêmes adresses IP dans la directive listen de votre bloc par défaut.

serveur {
    listen 80 default_server;
    listen 10.0.0.10:80 default_server;
    server_name _;
}

serveur {
    listen 10.0.0.10:80;
    server_name foo.example.com;
}

Sans la directive listen 10.0.0.10:80 default_server dans le bloc par défaut, foo.example.com serait servi pour http://10.0.0.10 même si 10.0.0.10 est votre adresse IP par défaut.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X