У меня есть два контейнера для приложения 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 / {}
и не работает.