Eu tenho dois aplicativos no servidor que funcionavam perfeitamente até planejar mudá-los para HTTPS.
Configuração Nginx para aplicativo 1:
server_name abc.com my.abc.com static.abc.com
Configuração para aplicativo 2:
server_name _;
Antes de ativar o SSL, ambos os aplicativos estavam funcionando, por exemplo
Aplicativo1http://static.abc.com/some-assets.png
Aplicativo2http://static.def.com/some-assets.png
Depois de ativar o SSL
Aplicativo1https://static.abc.com/some-assets.png
Aplicativo2https://static.def.com/some-assets.png
Se eu tentar acessar o App2 https://static.def.com/some-assets.png
agora, também estou apontando para o App 1 de alguma forma.
Tentei descobrir e descobri que se eu substituir server_name _;
na server_name static.def.com;
configuração do App 2 Nginx, ele começará a funcionar.
Minha pergunta é: é necessário que o Nginx defina explicitamente os domínios se você quiser servi-los por HTTPS? Ou é algo com o handshake SSL que está falhando, etc. e acaba assim?
Atualizar:
Arquivos de configuração Nginx:
Responder1
Como disse Johannes, acho que você tem uma concepção errada do que _
significa server_name
: absolutamente nada. A maioria dos guias o inclui em seu servidor padrão para garantir que ele não interfira em nenhum servidor virtual nomeado.
O que você deve ter perdido no que está lendo (ou talvez as pessoas que escreveram o que você está lendo não perceberam) é que um servidor padrão adequado na verdade inclui a default_server
opção como parte da listen
diretiva. Leia nginx.org/r/listen para obter mais informações.
Responder2
Pode depender da ordem das definições do seu servidor. _
não é um nome especial, é apenas um domínio inválido e, portanto, nunca corresponderá. Isso faz com que seja igual aos nomes dos servidores na outra definição de servidor para um host como static.def.com
: Ambos não correspondem. Se não houver nenhuma correspondência, o nginx simplesmente pegará a primeira definição do servidor.