Eu tenho vários servidores em execução na mesma máquina, alguns apenas com http, outros com http e https. Existem vários blocos de servidor definidos em arquivos separados, incluídos no arquivo de configuração principal.
Eu configurei um servidor "padrão" para http que servirá uma "página de manutenção" genérica para solicitações que não correspondem a nenhum dos outros nomes de servidor nos outros arquivos de configuração. O servidor padrão http funciona como esperado, ele usa o nome_do_servidor "_" e aparece primeiro na lista de inclusões (porque observei que, no caso de nomes de servidor duplicados nos servidores, é usado o que aparece primeiro). Isso funciona muito bem.
Eu esperaria o mesmo bloco de servidor exato (apenas alternando "listen 80 default_server" para "listen 443 default_server" e também em vez de exibir a página "return 444"), mas isso não acontece. Em vez disso, parece que o novo servidor https padrão está realmente capturando todas as conexões https recebidas e causando falhas, embora os outros blocos do servidor tenham nomes de servidor mais apropriados para as solicitações recebidas. A remoção do novo servidor https padrão fará com que o comportamento semi-correto seja retomado: todos os sites com https serão carregados corretamente; mas os sites sem https serão todos roteados para o primeiro servidor https nos arquivos de inclusão (que, de acordo com os documentos, se nenhum "servidor_servidor padrão" aparecer, o primeiro bloco de servidor a aparecer será "padrão").
Então, minha pergunta é: qual é a maneira correta de definir um "servidor padrão" no nginx para conexões SSL? Por que quando eu defino explicitamente um "default_server", ele fica ganancioso e agarra todas as conexões, enquanto quando eu deixo implicitamente o nginx decidir o "servidor padrão" funciona como eu esperaria (com o servidor incorreto definido como padrão e os outros servidores reais comportando-se corretamente)?
Aqui estão meus "servidores padrão". O HTTP funciona sem quebrar outros servidores. O Https quebra outros servidores e consome tudo.
server {
listen 443 ssl default_server;
server_name _;
access_log /var/log/nginx/maintenance.access.log;
error_log /var/log/nginx/maintenance.error.log error;
return 444;
}
server {
listen *:80 default_server;
server_name _;
charset utf-8;
access_log /var/log/nginx/maintenance.access.log;
error_log /var/log/nginx/maintenance.error.log error;
root /home/path/to/templates;
location / {
return 503;
}
error_page 503 @maintenance;
location @maintenance {
rewrite ^(.*)$ /maintenance.html break;
}
}
Algum de vocês vê o que pode estar errado aqui?