Tengo varios vhosts y me gustaría "desactivar" el vhost predeterminado, ya sea mediante una página en blanco, una página de error o, en general, lo que sea el uso más eficiente de los recursos de Nginx, mientras solo permito el acceso a otros vhosts a través de dominios predefinidos.
Respuesta1
Definir unservidor_predeterminadoque devuelve unHTTP 444código:
server {
listen 80 default_server;
server_name _;
return 444;
}
(Devolver un código de error 4xx significa que un cliente puede interpretar las solicitudes como una solicitud fallida, en lugar de unaPágina en blanco HTTP 200 pero funcionó totalmente, créame.)
Para solicitudes de puerto 443/SSL,puedes usar ssl_reject_handshake on
Respuesta2
solo definepor defectovhost que apuntará al directorio con el archivo index.html en blanco.
server {
listen 80 default_server;
server_name _ ;
root /var/www/placeholder ;
index index.html;
}
y coloque el índice en blanco en /var/www/placeholder
Respuesta3
¿Por qué no simplemente negarlo todo?
server {
listen 80 default_server;
server_name _;
location / {
deny all;
}
}
Respuesta4
Esto es lo que funcionó para mí tanto para HTTP como para HTTPS en Debian 10 (buster) ejecutando nginx 1.18.0
.
Nota: Siempre agrego include /etc/nginx/sites-enabled/*;
a la http
sección /etc/nginx/nginx.conf
y administro vhosts usando /etc/nginx/sites-available
las carpetas /etc/nginx/sites-enabled`.
Paso 1: cree un certificado de marcador de posición autofirmado
$ 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 []:
Paso 2: crea vhost predeterminado
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
Paso 3: habilite el vhost predeterminado
cd /etc/nginx/sites-enabled
ln -s ../sites-available/default default