Я хочу использовать обратный прокси-сервер nginx в качестве APIGateway в моей архитектуре микросервиса
Проблема: Nginx не может выполнить proxy_pass для моего payment_service
, работающего в другом контейнере.Однако, когда я пытаюсь curl payment_service:3000
изнутри nginx
контейнер, это работает.Таким образом, сеть в порядке.
docker-compose.yml
version: '3'
services:
payment_service:
container_name: payment_service
build: ./payment
ports:
- "3000:3000"
volumes:
- ./payment:/usr/app
networks:
- microservice-network
api_gateway:
image: nginx:latest
container_name: api_gateway
restart: always
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
ports:
- 8080:8080
- 443:443
depends_on:
- payment_service
networks:
- microservice-network
networks:
microservice-network:
driver: bridge
default.conf
upstream payment_server {
server payment_service:3000 max_fails=10;
}
server {
listen 8080;
location /api/v1/payment {
proxy_pass http://payment_server;
}
}
Платежный сервис работает нормально, когда я напрямую обращаюсь к нему, используя http://localhost:3000
, но не работаю с http://localhost:8080/api/v1/payment