Nginx не даёт отправить запрос на другой серевер

Ситуация: Запустил через docker-compose django и nginx на ubuntu vps хостинге. nginx слушает 80 и 443 порты. Проект открывается по домену и делает редирект на https.

Проблема: Не работают эндпоинты, которые отправляют запросы на другие сервера (к удалённым api). После отправки, всегда происходит таймаут ожидания.

Что удалось выяснить:

  • напрямую с системы через curl запросы/ответы успешные (сетевые настройки не мешают)
  • поднимал тот же самый docker-compose у себя на винде, все эндпоинты работают как надо
  • самое интересное: если сбилдить на хостинге не через docker-compose а только django без nginx, то всё работает как надо

Вот некоторые настройки:

#nginx.conf

user  nginx;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    upstream app {
        server backend:8000;
    }
    server {
    listen 80;
    server_name eternitydigital.ru;
    return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl;
        server_name eternitydigital.ru;

        ssl_certificate /etc/nginx/ssl/certs/cert.crt;
        ssl_certificate_key /etc/nginx/ssl/private/private.key;

        location / {
            proxy_pass http://backend:8000;
        }
    }
}

#Dockerfile nginx

FROM nginx:1.10.2

COPY nginx.conf /etc/nginx/nginx.conf

CMD ["nginx", "-g", "daemon off;"]

#docker-compose

version: '3.4'

services:
  django_app:
    build: ./django
    ports:
      - "8000:8000"
    image: backend
    container_name: backend

  nginx:
    build: ./nginx
    volumes:
      - ./nginx/ssl/cert.crt:/etc/nginx/ssl/certs/cert.crt
      - ./nginx/ssl/private.key:/etc/nginx/ssl/private/private.key
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - django_app
    image: nginx
    container_name: nginx

P.S. Настроек сначала было больше, но я уже 2 дня не могу починить проблему, поэтому много что снёс, чтобы хотя бы заработало

Вернуться на верх