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/*;
à http
seção /etc/nginx/nginx.conf
e gerencio vhosts usando /etc/nginx/sites-available
as 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