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 дня не могу починить проблему, поэтому много что снёс, чтобы хотя бы заработало