Você configura 3 servidores, respectivamente, atendendo solicitações endereçadas a server[123].domain.com
.
Quando uma solicitação de um domínio desconhecido entra em ação, o nginx a veicula com o domínio padrão. Por padrão, o nginx usa o primeiro definido, a menos que você especifique explicitamente outro com o sinal default_server
no listen
diretiva de um dos seus servidores. É por isso que suas solicitações nginx.domain.com
sempre serão atendidas pelo servidor padrão (primeiro).
Agora, o que você deseja é um proxy reverso. Não é o que você pediu ao nginx para fazer. Você simplesmente definiu seus servidores de backend aos quais você precisa adicionar outro servidor nginx como proxy reverso de frontend.
Para fazer isso, você precisará usar o ngx_http_proxy_module junto com o ngx_http_upstream_module .
Especificamente, você faz solicitações de proxy de um location
com proxy_pass
para seus servidores de back-end.
Aqui está uma configuração simples do servidor de proxy reverso que pode funcionar para você:
server {
listen 80;
listen 443 ssl; # Ensure your certificate is for nginx.domain.com;
server_name nginx.domain.com;
location /site1 {
proxy_pass $scheme://server1.domain.com;
}
location /site2 {
proxy_pass $scheme://server2.domain.com;
}
location /site3 {
proxy_pass $scheme://server3.domain.com;
}
}
Anote o uso da variável $scheme
, reproduzindo o esquema usado para se conectar a o frontend com conexão ao backend.
Não tenho certeza sobre a configuração do SSL no back-end. Eu acho que você precisa usar o mesmo server_name
em cada um deles e o mesmo certificado SSL que no frontend. Não sei se você pode usar certificados diferentes nos backends, cada um com um% diferente server_name
e alterar os parâmetros SSL para conexões proxy -> backends
com o módulo proxy.