1
resposta

proxy_pass retorna bad gateway mas curl funciona

ola, tenho o seguinte problema, e cenario: debian na cloud rodando tres conteiners docker: web - nginx com react srv - node com sqlite3 ubt - ubunto nao estou usando docker compose..

todos na mesma rede.. com mapeamento de portas ja consegui fazer o site rodar, mas tive que expor o conteiner da api srv.. entao quero usar a rede interna do docker para isso,

pelo nome do conteiner nao funciona, mas pelo ip dele sim: configurei meu proxy_pass para location /api { proxy_pass http://172.18.0.2:3001/; }

se eu fizer do conteiner ubunto um curl http://172.18.0.2:3001/requisicao recebo resposta do srv

o que indica que a comunicacao dos conteiner e a saida do srv estao ok..

porem o nginx retorna bad gateway quando acesso http://meusite.com/api/requisicao

tentei de muitas formas ja.. sempre da bad gateway quando tento consumir a api pelo nginx co proxy reverso

1 resposta

Olá Guilherme.

Tudo bem?

Desculpa a demora, estou respondendo esse tópico para tentar ajudar você e outros alunos que estiverem com essa mesma dúvida, e também para organizar o nosso fórum. Valeu :)

Pelo que entendi, você está enfrentando um problema com o proxy_pass no NGINX. Você configurou corretamente o proxy_pass para redirecionar as requisições para o IP do container da API, mas está recebendo um erro de "bad gateway" ao tentar acessar a API pelo NGINX.

Uma possível causa para esse erro é que o NGINX não está conseguindo se comunicar corretamente com o container da API. Certifique-se de que o container da API está em execução e que a porta 3001 está corretamente mapeada para o container.

Além disso, verifique se não há nenhum problema de firewall ou configuração de rede que esteja bloqueando a comunicação entre o NGINX e o container da API.

Outra coisa que você pode tentar é usar o nome do container em vez do IP no proxy_pass. Para isso, você precisa garantir que os containers estejam na mesma rede e que o nome do container esteja corretamente configurado. Por exemplo:

location /api {
    proxy_pass http://nome_do_container_da_api:3001/;
}

Se nenhuma dessas soluções funcionar, pode ser necessário verificar os logs do NGINX para obter mais informações sobre o erro. Os logs geralmente estão localizados em /var/log/nginx/error.log.

Espero que essas sugestões possam te ajudar a resolver o problema. Se tiver mais alguma dúvida, é só me dizer.

Espero ter ajudado e bons estudos!