Beste Möglichkeit, den Standardserver zu verhindern?

Beste Möglichkeit, den Standardserver zu verhindern?

Ich habe mehrere virtuelle Hosts und möchte den Standard-Vhost „abschalten“, entweder durch eine leere Seite, eine Fehlerseite oder allgemein durch das, was die Ressourcen von Nginx am effizientesten nutzt, und gleichzeitig den Zugriff auf andere virtuelle Hosts nur über vordefinierte Domänen zulassen.

Antwort1

Definieren Sie einenStandardserverdas gibt einHTTP 444Code:

server {
    listen      80 default_server;
    server_name _;
    return      444;
}

(Die Rückgabe eines 4xx-Fehlercodes bedeutet, dass Anfragen von einem Client als erfolglose Anfrage interpretiert werden können, anstatt alsHTTP 200 Leere Seite, aber hat total funktioniert, glauben Sie mir.)

Für Port 443 / SSL-Anfragen,Sie können verwenden ssl_reject_handshake on

Antwort2

Definieren Sie einfachStandardvirtueller Host, der auf das Verzeichnis mit der leeren Datei „index.html“ verweist.

server {
    listen       80 default_server;
    server_name  _ ;
    root /var/www/placeholder ; 
    index index.html;
}

und platzieren Sie einen leeren Index in /var/www/placeholder

Antwort3

warum nicht einfach alles leugnen

server {
    listen       80 default_server;
    server_name  _;

    location / {
        deny    all;
    }
}

Antwort4

Dies hat bei mir sowohl für HTTP als auch für HTTPS unter Debian 10 (Buster) mit nginx funktioniert 1.18.0.

Hinweis: Ich füge immer include /etc/nginx/sites-enabled/*;den httpAbschnitt an /etc/nginx/nginx.confund verwalte virtuelle Hosts mithilfe /etc/nginx/sites-availableder Ordner „/etc/nginx/sites-enabled“.

Schritt 1: selbstsigniertes Platzhalterzertifikat erstellen

$ mkdir -p /usr/local/etc/ssl

$ cd /usr/local/etc/ssl

$ openssl req -new -x509 -days 1 -nodes -out default-cert.pem -keyout default-key.pem
Generating a RSA private key
.+++++
.........................+++++
writing new private key to 'default-key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Schritt 2: Standard-Vhost erstellen

cat << EOF > /etc/nginx/sites-available/default
server {
    listen 80 default_server;
    listen 443 default_server ssl;

    return 444;

    ssl_ciphers aNULL;
    ssl_certificate /usr/local/etc/ssl/default-cert.pem;
    ssl_certificate_key /usr/local/etc/ssl/default-key.pem;
}
EOF

Schritt 3: Standard-Vhost aktivieren

cd /etc/nginx/sites-enabled
ln -s ../sites-available/default default

Schritt 4: nginx neu starten

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

verwandte Informationen