Nginx Timeouts получает код состояния 502 при использовании Gunicorn
В настоящее время у меня возникла проблема. Мое приложение Django выдает таймаут, т.е. 502, когда я помещаю его за прокси, например, nginx. Я пытался увеличить таймауты, но все равно ничего не изменилось, любая помощь будет высоко оценена. В качестве рабочего сервера я использую gunicorn. Любая помощь будет высоко оценена.
- Докер-композитный файл
version: '2'
services:
# Nginx server
nginx:
# Build context
build: ./nginx
# Mapping machine and container ports
ports:
- 8094:443
# Storage volumes
volumes:
- static_volume:/home/app/static
- media_volume:/home/app/media
- ./ssl:/ssl
depends_on:
- web
networks:
- app_network
restart: "on-failure"
web:
container_name: django_app
build: .
command: sh -c "gunicorn ticket_resolution.wsgi:application --bind 0.0.0.0:8000 --keyfile=/ssl/my.key --certfile=/ssl/my.crt --timeout 200 --log-level debug --workers 4"
volumes:
- .:/code
- ./ssl:/ssl # Mounting the directory containing SSL certificates
- static_volume:/home/app/static
- media_volume:/home/app/media
env_file:
- .env
depends_on:
- db
- redis
networks:
- app_network
restart: "on-failure"
redis:
container_name: redis
image: redis:latest
ports:
- "6379:6379"
networks:
- app_network
db:
container_name: db
image: postgres:latest
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- .env
networks:
- app_network
networks:
app_network:
driver: bridge
volumes:
postgres_data:
static_volume:
media_volume:
- Nginx config
upstream django_app {
server web:8000;
}
server {
listen 443 ssl;
ssl_certificate /ssl/my.crt;
ssl_certificate_key /ssl/my.key;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /static/ {
alias /home/app/static/;
}
location /media/ {
alias /home/app/media/;
}
location / {
proxy_pass https://django_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Proto https;
# Add the X-CSRFToken header
proxy_set_header X-CSRFToken $http_csrf_token;
proxy_set_header Referer $http_referer;
}
}