Einstellen von Nginx, um alle nicht behandelten VHosts zu fangen

41

Wie kann ich einen virtuellen Host für Anforderungen erstellen, die keinem der virtuellen Hosts entsprechen, wenn ich bereits mehrere virtuelle Hosts habe? (dh Zugriff über IP, eine andere Domain, die mit IP verknüpft ist, usw. usw.)

SandyD
quelle

Antworten:

52

Servername _; und default_server in der Listen-Konfiguration sind das, wonach Sie suchen.

Beispiel:

server {

   listen 80 default_server;
   server_name _;

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

}
Brian P
quelle
1
Und für den https-Fall:listen 443 ssl default_server;
James T Snell
Wenn ich dies aktiviere, owncloud 9antwortet mein nicht. Warum? Owncloud VHOST hat einen Servernamen und ist kein Standardserver.
Corni
Ich benutze nicht 80nur 443 ist offen.
Corni
Wenn ich dies hinzufüge, werden meine anderen Konfigurations-Snippets in / etc / nginx / sites-enabled / ignoriert. Alle Domains gehen /var/www/defaultin diesem Fall auf. Wie muss ich die Schnipsel bestellen?
Rubo77
Kann ich eine vhos zu postgresql verbindungen erstellen?
Erlon Charles
4

Wenn Sie SSL verwenden, benötigen Sie zusätzliche Informationen für ein default_server-Zertifikat und einen Schlüssel (die selbst signiert sein können).

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 versucht, eine SSL-Verbindung auf einem IP / Port-Matching-Standardserver zu akzeptieren. Wenn auf einem solchen Server ein Zertifikat / Schlüssel fehlt, trennt nginx die Verbindung. Es werden keine anderen Server ausprobiert. Also cert / key nicht vergessen.

andreycpp
quelle
Wichtiger Hinweis zum SSL-Zertifikat! Wenn das Zertifikat fehlt, wird der gesamte Nginx-Server nicht ausgeführt (obwohl nginx -t"ok" angezeigt wird)
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;
}

Die Einträge beziehen sich jeweils auf Port 80 (HTTP), Port 443 (HTTPS), Port 80 IPv6 und Port 443 IPv6.

Sie können hinzufügen log_not_found off;, um zu vermeiden, dass ein Protokolleintrag für die nicht gefundene Seite hinzugefügt wird.

Zaz
quelle