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