Problema Nginx server_name em HTTPS para vários aplicativos (vhosts)

Problema Nginx server_name em HTTPS para vários aplicativos (vhosts)

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.pngagora, 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:

abc.conf

def.conf

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_serveropção como parte da listendiretiva. 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.

informação relacionada