У меня есть следующие настройки и я не могу понять, почему я не могу подключиться к API.
nginx .conf
worker_processes auto;
worker_rlimit_nofile 200000;
events {
use epoll;
accept_mutex on;
multi_accept on;
worker_connections 1024;
}
http {
error_log /etc/nginx/error_log.log warn;
client_max_body_size 20m;
server {
listen 80;
listen [::]:80;
location / {
proxy_pass http://api:8080/;
}
location /health {
return 200;
access_log off;
}
}
}
docker -compose.yml
version: "3.7"
services:
nginx:
container_name: nginx
image: "nginx:latest"
ports:
- "8000:80"
networks:
- internal_net
volumes:
- ./container/nginx.conf:/etc/nginx/nginx.conf
api:
container_name: api
build:
context: .
dockerfile: container/Dockerfile
expose:
- "8080"
networks:
- internal_net
depends_on:
- postgres
command: ["./wait-for-it.sh", "postgres:5432", "--timeout=60", "--", "./52-server-go"]
postgres:
container_name: postgres
image: "postgres:9.5-alpine"
expose:
- "5432"
networks:
- internal_net
networks:
internal_net:
driver: bridge
volumes:
container:
Мой API настроен на запуск через порт 8080, когда я go в контейнере и запускаю запрос curl против этого адрес это работает. Согласно файлу составления, он должен предоставлять этот адрес локальной сети составления, которая используется всеми службами, включая nginx.
. Согласно конфигурации nginx он должен передавать каждый запрос (кроме /health
проверка, которая работает) к услуге api
. Вместо этого возвращается 502 от nginx.
Где я перепутал? Что я сделал не так?