Por que o Nginx não está rejeitando hosts errados?

2

Esta é minha configuração:

upstream beta {     
  server localhost:49213;
}
server {     
  listen 80;
  server_name beta.example.com;
  location / {
    proxy_pass http://beta;     
  }   
}
server {
  listen 80;
  server_name "";
  return 444;
}

Quando abro localhost:80 , também vejo o conteúdo de localhost:49213 . Eu acho errado. O Nginx deve rejeitar todas as solicitações que não têm beta.example.com em Host cabeçalho HTTP, certo? Por que isso não está acontecendo?

    
por yegor256 29.07.2015 / 19:11

1 resposta

2

OK, aqui está a resposta. O servidor com um server_name vazio deve ser declarado como "padrão". Mais detalhes aqui: link

Nginx, quando Host cabeçalho HTTP não corresponde a server s, vai para o padrão, que é o primeiro, se não especificado de outra forma. Aqui está a configuração que funciona:

upstream beta {     
  server localhost:49213;
}
server {     
  listen 80;
  server_name beta.example.com;
  location / {
    proxy_pass http://beta;     
  }   
}
server {
  listen 80 default_server; # pay attention!
  server_name "";
  return 444;
}
    
por 29.07.2015 / 19:52

Tags