Nginx, por que preciso especificar um nome de servidor?

1

Estou curioso em saber por que é necessário especificar um server_name no arquivo de configuração nginx no topo da propriedade listen.

Eu tenho lido um artigo digitalocean ao entender o arquivo de configuração do nginx, e é assim que explica a diferença entre as duas configurações:

listen: The ip address / port combination that this server block is designed to respond to. If a request is made by a client that matches these values, this block will potentially be selected to handle the connection.

server_name: This directive is the other component used to select a server block for processing. If there are multiple server blocks with listen directives of the same specificity that can handle the request, Nginx will parse the "Host" header of the request and match it against this directive.

Mas como poderia haver dois servidores diferentes ouvindo no mesmo ip e na mesma porta? O Linux nem permitiria que você iniciasse dois serviços ouvindo na mesma porta, tanto quanto eu sei.

O que estou perdendo?

Obrigado!

    
por Nicola Pedretti 29.06.2017 / 20:58

2 respostas

2

O Nginx é um serviço no Linux e está usando as portas que você diz para usar. A partir daí, o Linux não está preocupado com o que o nginx faz, portanto, se o nginx quiser ler algo em uma solicitação à porta reservada (por exemplo, get example.com na porta 80) e fizer algo diferente com ele de outras solicitações (por exemplo, get example.net na porta 80), pode fazê-lo.

Como um servidor comumente hospeda mais de um domínio, o nginx e todo o software de servidor da Web moderno oferecem um recurso para suportar isso, que no nginx é a diretiva server_name .

No entanto, se o nginx quisesse fazer algo na mesma porta que algum outro serviço no servidor (por exemplo, a porta 22, comumente usada pelo OpenSSH), haveria um conflito a ser resolvido.

    
por 02.07.2017 / 23:39
0

Bem, com HTTP 1.1 você pode apontar para um IP muitos nomes de domínio, não foi possível em HTTP 1.0 (mais você pode ver em esta resposta ). Então, você começa em nginx process e escuta nas portas solicitadas, número infinito de domínios e subdomínios. Por exemplo, você poderia verificar stackoverflow.com e serverfault.com, ambos apontam para os mesmos IPs.

    
por 29.06.2017 / 21:15

Tags