Nginx блокирует исходящие запросы

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

Проблема: Конечные точки, отправляющие запросы на другие серверы (к удаленным API), не работают. После отправки всегда возникает таймаут ожидания.

Вот некоторые настройки: #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 дней, поэтому я удалил много вещей, чтобы хотя бы заставить его работать

Что вы узнали:

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

Проблема заключалась в mtu. Я переопределил его в docker-compose, и все стало работать правильно. На моем сервере по умолчанию было 1500

networks:
    default:
      driver: bridge
      driver_opts:
        com.docker.network.driver.mtu: 1450
Вернуться на верх