¿La mejor manera de evitar el servidor predeterminado?

¿La mejor manera de evitar el servidor predeterminado?

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 httpsección /etc/nginx/nginx.confy administro vhosts usando /etc/nginx/sites-availablelas 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

Paso 4: reinicie nginx

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

información relacionada