Melhor maneira de evitar o servidor padrão?

Melhor maneira de evitar o servidor padrão?

Eu tenho vários vhosts e gostaria de "desligar" o vhost padrão, seja por página em branco, página de erro ou geralmente qualquer que seja o uso mais eficiente dos recursos do Nginx, permitindo apenas o acesso de outros vhosts via domínios pré-definidos.

Responder1

Defina umservidor_padrãoque retorna umHTTP444código:

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

(Retornar um código de erro 4xx significa que as solicitações podem ser interpretadas por um cliente como uma solicitação malsucedida, em vez de umaPágina em branco HTTP 200, mas totalmente funcionou, confie em mim.)

Para solicitações de porta 443/SSL,você pode usar ssl_reject_handshake on

Responder2

Apenas definapadrãovhost que apontará para o diretório com o arquivo index.html em branco.

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

e coloque o índice em branco em /var/www/placeholder

Responder3

por que não negar tudo

server {
    listen       80 default_server;
    server_name  _;

    location / {
        deny    all;
    }
}

Responder4

Isso é o que funcionou para mim tanto para HTTP quanto para HTTPS no Debian 10 (buster) executando nginx 1.18.0.

Nota: Eu sempre acrescento include /etc/nginx/sites-enabled/*;à httpseção /etc/nginx/nginx.confe gerencio vhosts usando /etc/nginx/sites-availableas pastas /etc/nginx/sites-enabled`.

Etapa 1: criar um certificado de espaço reservado autoassinado

$ 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 []:

Etapa 2: criar vhost padrão

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

Etapa 3: habilitar vhost padrão

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

Etapa 4: reinicie o nginx

insira a descrição da imagem aqui

insira a descrição da imagem aqui

informação relacionada