Não há como forçar o nginx a usar as entradas de / etc / hosts.
No entanto, você pode usar um mapa {} em sua configuração do nginx para informar ao nginx como converter nomes de host em IPs.
Você precisaria de um script para converter seu / etc / hosts em um formato que possa ser usado em um mapa, por exemplo, hostname ip
vs ip hostname
.
Aqui está um mapa de exemplo:
map $container_hostname $container_ip {
default 127.0.0.1;
containerA X.X.X.X;
containerB Y.Y.Y.Y;
}
Mais tarde, no arquivo de configuração, você pode fazer:
server_name ~^(www\.)?(?<container_hostname>.+)$;
location / {
proxy_pass http://$container_ip:80;
}
O nginx corresponderá ao server_name
solicitado e armazenará em $ container_hostname:
Em seguida, ele procurará o nome do host no mapa, obterá o IP correspondente e passará para proxy_pass.
Mais informações no mapa: link