Как предотвратить ошибку тайм-аута 504 в приложении django, запущенном на сервере Docker nginx? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть два контейнера для приложения Django: один для самого приложения, другой для сервера nginx.

Хорошо работает, но есть функция, которая занимает немного времени, и я получаю 504 Ошибка времени ожидания шлюза до завершения.

Файл docker-compose.yml содержит следующие службы:

services:
  dj:
    build:
      context: .
      dockerfile: prd/dj/Dockerfile
    volumes:
      - ./sharepoint:/sharepoint
      - static_files:/sharepoint/static/
      - media_files:/sharepoint/media/
    ports:
      - 8000:8000
    command: gunicorn -w 4 sharepoint.wsgi --bind 0.0.0.0:8000
  nx:
    build:
      context: .
      dockerfile: prd/nx/Dockerfile
    volumes:
      - static_files:/static_files
      - media_files:/media_files
    ports:
      - 8090:80
      - 8091:443

Файл Dockerfile для nginx содержит следующее:

FROM nginx:latest

RUN rm /etc/nginx/conf.d/default.conf

COPY ./prd/nx/nx.conf /etc/nginx/conf.d

nx.conf содержит следующее:

server {
    listen 80;
    listen 443;
    server_name localhost;
    access_log /var/log/nginx/example.log;

    location /static/ {
        autoindex off;
        alias /static_files/;
    }
    location /media/ {
        autoindex off;
        alias /media_files/;
    }
    location / {
        proxy_pass http://dj:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Я нашел решение для этого в Nginx 504 Ошибка тайм-аута шлюза для Django

Установите настройки тайм-аута ngnix в блок http {...} в файле /etc/nginx/nginx.conf:

http {
#All block content...

#Now the timeout settings:

proxy_connect_timeout 50000;
proxy_read_timeout 50000;
proxy_send_timeout 50000; } 

Перезапустите nginx

Я пробовал это без успеха.У меня нет блока http {}.

Я попытался установить настройки тайм-аута в location / {} и не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...