Estou tentando obter nomes de host para meus contêineres docker ejá que só posso usar um proxy reversopara 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 ao meu host local.
Para que eu possa acessar o servidor web via:
http://localhost:8080
Em vez disso, prefiro usar:
http://webservice.local
Por isso adicionei 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?
Responder1
Não tenho certeza se esta é a sintaxe correta. Tente algo assim:
upstream myupstream {
server 127.0.0.1:8080 fail_timeout=2s;
keepalive 32;
}
location / {
proxy_pass http://myupstream;
proxy_redirect http://myupstream/ /;
}
algo nesse sentido..
Mas se você deseja apenas redirecionar a porta 8080 para 80, por que não usar um utilitário de rede como o socat?
Então você deve adicionar virtualhosts no nginx para cada upstream e adicionar esses virtualhosts no DNS ou/etc/hosts, que serão todos resolvidos para localhost.
Ou você pode simplesmente evitar o upstream e usar virtualhosts assim:
server {
listen 80;
server_name myvirtualhost1.local;
location / {
proxy_pass http://127.0.0.1:8080;
}
server {
listen 80;
server_name myvirtualhost2.local;
location / {
proxy_pass http://127.0.0.1:9090;
}