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 http
Abschnitt an /etc/nginx/nginx.conf
und verwalte virtuelle Hosts mithilfe /etc/nginx/sites-available
der 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