Dos documentos da Amazon :
To ensure that your load balancer can scale properly, verify that each subnet for your load balancer has a CIDR block with at least a /27 bitmask (for example, 10.0.0.0/27) and has at least 8 free IP addresses. Your load balancer uses these IP addresses to establish connections with the instances.
Isso faz parecer que a verificação de integridade do ELB é feita por meio do IP privado da AWS em vez do nome do domínio. Pelo que sei da Amazon, é assim que eles preferem fazer as coisas quando podem (por óbvias razões de desempenho, sem necessidade de pesquisa de DNS, podem ser manipulados por roteadores mais próximos, etc.)
Se for esse o caso, o cabeçalho do host (a menos que esteja em branco, não tenho 100% de certeza de como os cabeçalhos de host funcionam quando você faz uma solicitação a um IP simples) será o endereço privado da AWS da instância do EC2 (Estou assumindo que é EC2) executando o servidor web. Isso afeta a maneira como o Nginx escolhe qual servidor virtual deve manipular a solicitação.
Como o Nginx possui dois blocos server
, ele precisa decidir qual deles recebe qualquer solicitação. O processo pelo qual ele escolhe os blocos de servidor (detalhes aqui ) é o seguinte:
-
Primeiro, procura servidores que atendem na porta em que a solicitação chegou. Nesse caso, os dois servidores estão ouvindo na mesma porta, portanto, isso não ajuda em nada.
-
Em seguida, ele olha para o cabeçalho do host da solicitação e procura por servidores com um
server_name
que corresponda ao cabeçalho do host. Nesse caso, nenhum deles corresponderá, porque o cabeçalho do host é o IP privado da AWS atribuído à instância (ou em branco, como eu disse, não tenho certeza). -
Finalmente, se nenhum dos dois produzir uma correspondência, apenas será usado com qualquer servidor que seja o padrão. Na ausência de uma declaração padrão explícita, o servidor que é definido primeiro na configuração do site é escolhido como o padrão.
Se o seu servidor de redirecionamento vem antes da configuração do servidor principal (como eu imagino que faz), então este é provavelmente o seu problema. Você precisa fazer uma das três coisas:
-
Especifique que você deseja que o outro servidor (o servidor principal) seja o padrão adicionando
default_server
à diretivalisten
, ou seja,listen 80 default_server;
-
Mude o bloco
location /test
para o outro bloco de servidor ou -
Inverte a ordem em que os blocos do servidor estão definidos.
A primeira opção parece ser o caminho a seguir, pois faz sentido que a diretiva default_server
seja explícita em vez de implícita, e faz sentido que o servidor principal seja o padrão e não o que você tinha servidor de redirecionamento de tarefas.
Se eu estiver correto em minha hipótese, isso deve resolvê-lo.