nome_do_servidor _; e default_server na configuração de escuta são o que você está procurando.
Exemplo:
server {
listen 80 default_server;
server_name _;
root /var/www/default; (or wherever)
}
Se eu já tiver um monte de virtualhosts, como posso criar um host virtual para lidar com solicitações que não correspondem a nenhum dos hosts virtuais? (ou seja, o acesso por IP, outro domínio ligando para IP, .etc .etc)
server {
listen 80 default_server;
listen 443 ssl default_server;
listen [::]:80 default_server;
listen [::]:443 ssl default_server;
server_name _;
root /path/to/default;
}
As entradas são para a porta 80 (HTTP), porta 443 (HTTPS), porta 80 IPv6 e porta 443 IPv6, respectivamente.
Você pode considerar adicionar log_not_found off;
para evitar adicionar uma entrada de registro para a página não ser encontrada.
Se você usar SSL, precisará de um canal extra para um certificado padrão e uma chave (que podem ser autoassinados).
server {
server_name _;
listen 80 default_server;
listen 443 ssl default_server;
ssl_certificate <path to cert>;
ssl_certificate_key <path to key>;
return 404; # or whatever
}
O Nginx tentará aceitar a conexão SSL em um default_server IP / port-matching. Se tal servidor estiver faltando cert / key, o nginx soltará a conexão. Não tentará outros servidores. Então não esqueça do cert / key.