Estou tentando obter nomes de host para meus contêineres docker e, como só posso usar um proxy reverso para isso, estou tentando conseguir exatamente isso com a ajuda do nginx.
Um contêiner docker é um serviço da web que expõe a porta 8080 para o meu localhost.
Então eu posso acessar o servidor web via:
http://localhost:8080
Em vez disso, prefiro usar:
http://webservice.local
Por isso acrescentei ao meu/etc/hosts
127.0.0.1 webservice.local
Em seguida, instalei o nginx e adicionei ao /etc/nginx/sites-available/default
:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
location webservice.local {
proxy_pass http://localhost:8080
}
Depois de recarregar o nginx, recebo o seguinte erro ERR_CONNECTION_REFUSED
ao tentar abrir http://webservice.local
no meu navegador.
O que eu fiz errado? Como posso configurar o proxy reverso corretamente?
Não tenho certeza se esta é a sintaxe correta. Tente algo assim:
algo nessa linha..
Mas se você deseja apenas redirecionar a porta 8080 para 80, por que não usar um utilitário de rede como o socat?
Em seguida, você deve adicionar virtualhosts em nginx para cada upstream e adicionar esses virtualhosts em DNS ou /etc/hosts, que serão resolvidos como localhost.
Ou você pode simplesmente evitar o upstream e usar virtualhosts assim: