Не удается увидеть адрес, когда nginx обрабатывает порт и выдает 502 Bad Gateway
Я столкнулся с проблемой при изучении nginx. У меня есть 2 сервера на 2 разных портах. Я хочу, чтобы при обращении к "http://localhost/api/v1/clients/" возвращалась страница с информацией, хранящейся на порту 8000. Теперь я получаю ошибку 502 Bad Gateway. В консоли: connect() failed (111: Connection refused) while connecting to upstream, client: 111.11.0.1, server: localhost, request: "GET /api/v1/clients/ HTTP/1.1", upstream: "http://111.11.0.2:80/api/v1/clients/", host: "localhost" Если я перейду по адресу: "http://localhost:8000/api/v1/clients/", все в порядке. В чем моя ошибка?
nginx:
upstream backend {
server 127.0.0.1:8000;
server 127.0.0.1:3000;
}
server {
listen 80;
server_name localhost;
location /api/v1/clients/ {
proxy_pass http://backend_client/api/v1/clients/;
}
}
docker:
services:
backend_client:
build: ./Client
volumes:
- ./Client/:/app
ports:
- "8000:8000"
restart: always
command:
"gunicorn --bind=0.0.0.0:8000 django_app.wsgi"
nginx:
image: nginx:1.17
container_name: ngx
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
depends_on:
- backend_client
Измените конфигурацию NGINX. Убедитесь, что вы читаете основную информацию о
- NGINX config upstreams
- NGINX config обратный прокси
Ваш бэкенд будет доступен как backend_client в вашем контейнере nginx. Восходящий поток будет backend. Ваше приложение все еще листится на порту 8000, и эта информация важна. Поэтому сообщите об этом NGINX :).
upstream backend {
server backend_client:8000;
}
server {
listen 80;
location /api/v1/clients/ {
proxy_pass http://backend/;
}
}