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

41

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.-à-d. accès par IP, un autre domaine liant à IP, .etc .etc)

SandyD
la source

Réponses:

52

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)    

}
Brian P
la source
1
Et pour le cas https:listen 443 ssl default_server;
James T Snell
Quand j'active ceci, mon owncloud 9ne répondra pas. Pourquoi? Owncloud VHOST a un nom de serveur et n’est pas un serveur par défaut.
Corni
Je n'utilise pas 80que 443 est ouvert.
Corni
Si j'ajoute cela, mes autres extraits de configuration dans / etc / nginx / sites-enabled / sont ignorés. tous les domaines vont /var/www/defaultdans ce cas. Comment dois-je commander les extraits?
rubo77
Je peux créer un vhos aux connexions postgresql?
Erlon Charles
4

Si vous utilisez SSL, vous aurez besoin de plus de plomberie pour un serveur_défaut - certificat et clé (pouvant être auto-signé).

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 compatible. Si un tel serveur manque à cert / key, nginx abandonnera la connexion. Il n'essaiera pas d'autres serveurs. Alors n'oubliez pas cert / key.

Andreycpp
la source
Note importante à propos du certificat SSL! Si le certificat est manquant, tout le serveur nginx ne fonctionnera pas (même s'il nginx -tdit "ok")
Philipp
3
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 sont pour le port 80 (HTTP), le port 443 (HTTPS), le port 80 IPv6 et le port 443 IPv6, respectivement.

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

Zaz
la source