it-swarm.com.de

Setzen Sie Nginx so, dass alle nicht behandelten Vhosts gefangen werden

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

41
SandyD

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

Beispiel:

server {

   listen 80 default_server;
   server_name _;

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

}
52
Brian P

Wenn Sie SSL verwenden, benötigen Sie zusätzliche Installationsmöglichkeiten für einen default_server - Zertifikat und Schlüssel (die selbstsigniert 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-passenden Standard-Server zu akzeptieren. Wenn auf einem solchen Server cert/key fehlt, wird die Verbindung von nginx getrennt. Es werden keine anderen Server ausprobiert. Vergessen Sie also nicht 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;
}

Die Einträge gelten für Port 80 (HTTP), Port 443 (HTTPS), Port 80 IPv6 bzw. Port 443 IPv6.

Sie könnten in Betracht ziehen, log_not_found off; um zu vermeiden, dass ein Protokolleintrag für die nicht gefundene Seite hinzugefügt wird.

3
Zaz