504 Таймаут шлюза (Gunicorn-Django-Nginx) Проблема с Docker Compose
Есть один процесс бэкенда, на обработку которого уходит около 1-2 минут. Экран загрузки работает в течение 1 минуты и показывает 504 Gateway Timeout
Вот журнал в nginx.access.log
172.18.0.2 - - [16/Dec/2022:23:54:02 +0000] "POST /some_request HTTP/1.1" 499 0 "http://localhost/some_url" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
Но из журнала отладки django я вижу, что POST-запрос все еще обрабатывается на бэкенде
docker-compose.yml таймаут установлен на 300, без него браузер вернет ошибку 502 (соединение преждевременно закрыто)
services:
web:
image: genetic_ark_web:2.0.0
build: .
command: bash -c "python manage.py collectstatic --noinput && gunicorn ga_core.wsgi:application --bind :8000 --timeout 300 --workers 2 --threads 4"
Это все параметры, которые я пробовал в nginx.conf, но все равно таймаут 504 возвращается после 60s
server {
# port to serve the site
listen 80;
# optional server_name
server_name untitled_name;
...
# request timed out -- default 60
client_body_timeout 300;
client_header_timeout 300;
# if client stop responding, free up memory -- default 60
send_timeout 300;
# server will close connection after this time -- default 75
keepalive_timeout 300;
location /url_pathway/ {
proxy_pass http://ga;
# header
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
send_timeout 300s;
keepalive_timeout 300s;
fastcgi_connect_timeout 300s;
fastcgi_send_timeout 180s;
fastcgi_read_timeout 180s;
uwsgi_read_timeout 300s;
uwsgi_connect_timeout 300s;
Есть идеи, какой параметр может контролировать таймаут?
Очевидно, не вызвана nginx-контейнером или web-контейнером. Исправлено путем изменения таймаута в nginx-proxy, который прерывается, вызывая ошибку 499 в журнале доступа nginx, в то время как веб-контейнер продолжает свой процесс бэкенда
Добавлено ниже в nginx.conf для nginx-container
proxy_read_timeout 300s;
Для nginx-proxy, proxy_read_timeout 300s;
тоже добавляется в конфиг