nginx escolhendo o site padrão incorreto [duplicado]

3

Primeiramente, sei que posso especificar default_server para forçar um site padrão, mas quero entender por que o nginx não está simplesmente escolhendo o primeiro server definido como documentado .

No final da seção http no nginx.conf eu tenho

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

/etc/nginx/conf.d / * .conf é apenas uma configuração padrão de proxy e configuração ssl

Sites definidos são

000-default example.com zombo.com

o site padrão aponta para um diretório local e index.html, os outros dois apontam para servidores proxy.

000-default

server {
  listen   80;
  server_name  aaa-test;

  access_log  /var/log/nginx/localhost.access.log;

  location / {
    root   /var/www/nginx-default;
    index  index.html index.htm;
  }
}

example.com

server {

    server_name example.com *.example.com ;
    listen 80;

    location / {
        proxy_pass  http://10.245.0.19;
        proxy_redirect default;
    }

}

zombo.com

server {

    server_name zombo.com *.zombo.com ;
    listen 80;

    location / {
        proxy_pass  http://10.245.0.36;
        proxy_redirect default;
    }

}

Mas se eu procurar o IP dos servidores nginx, recebo uma resposta do example.com. Eu tentei renomear os arquivos de configuração para carregá-los em ordens diferentes e sempre obter example.com como padrão. Mesmo se eu nomear seu arquivo de configuração zzz.com

Os documentos dizem que o tráfego sem cabeçalho de host deve ir para o primeiro host virtual, mas não consigo fazer isso acontecer.

Se eu remover example.com, o tráfego vai para o host padrão, não zombo.com.

Estou realmente perplexo aqui ...

Editar: informações solicitadas por comentários

# ls -lU /etc/nginx/sites-enabled
total 0
lrwxrwxrwx 1 root root 38 Oct  3 00:05 example.com -> /etc/nginx/sites-available/example.com
lrwxrwxrwx 1 root root 34 Oct  3 00:05 000-default -> /etc/nginx/sites-available/default
lrwxrwxrwx 1 root root 36 Oct  2 22:58 zombo.com -> /etc/nginx/sites-available/zombo.com
    
por Slashterix 03.10.2014 / 01:46

1 resposta

4

O nginx é olhando para o primeiro server definido, mas não é o que você acha que é.

Se você executar ls -lU /etc/nginx/sites-enabled , verá o diretório listando na ordem em que aparece no disco, que é a ordem na qual eles serão lidos. Isso muitas vezes não é a ordem que você espera.

Qual, claro, é um motivo pelo qual você pode definir explicitamente um default_server .

    
por 03.10.2014 / 02:15

Tags