Puncte:1

Cum se dezactivează tamponarea în amonte Nginx + Docker + Gunicorn?

drapel ph

Încerc să folosesc Nginx ca server proxy între client și Gunicorn. Nginx, Gunicorn (Django) sunt containerele lui Docker. Problema este că nu pot dezactiva tamponarea în amonte când trimit fișiere mari de la client la aplicația Django. Timpul TTFB este destul de mic, astfel bara mea de progres (care folosește evenimentul xhr.upload.progress) devine 100% foarte rapidă (mai puțin de secundă). Apoi trebuie să aștept 30 de secunde până când fișierul va fi încărcat pe server. Iată setările mele. Te rog ajuta-ma. Am încercat multe configurații încercând să setez dimensiunea tamponului la zero etc., verificați multe răspunsuri pe StackOverflow, dar nimic nu ajută.

docker-compose.yaml

...
    Servicii:
  db:
    imagine: postgres:12.4
    volume:
      - postgres_data:/var/lib/postgresql/data/
    reporniți: întotdeauna
    porturi:
      - ${DB_PORT}:${DB_PORT}
    env_file:
      - ./.env

  backend:
    build: ./src/backend
    volume:
      - RUDZASV0021:/cod/storage/RUDZASV0021
      - jurnal:/cod/jurnal
    reporniți: întotdeauna
    depinde de:
      - db
    env_file:
      - ./.env

  nginx:
    construi:
      context: .
      dockerfile: ./src/frontend/Dockerfile
    volume:
      - ./docker-settings/default.conf:/etc/nginx/conf.d/default.conf:ro
    reporniți: întotdeauna
    porturi:
      - 80:80
      - 443:443
    depinde de:
      - backend

Backend Dockerfile

DIN python:3.8.7-slim

WORKDIR /cod
COPIE . .
RUN pip install -r /code/requirements.txt
RUN apt-get update && apt-get install -y mc
CMD gunicorn entrypoints.wsgi:application --workers=4 --worker-class=gevent --timeout=90 --graceful-timeout=10 --bind 0.0.0.0:8000

Nginx Dockerfile

DE LA nginx:1.20.0

WORKDIR /frontend
COPY ./src/frontend/dist .
WORKDIR /cert
COPY ./cert/device.key .
COPIE ./cert/device.crt .

Nginx default.conf

în amonte hello_django {
    server backend:8000 fail_timeout=0;
}

Server {
    asculta 80;
    returnează 301 https://$host$request_uri;
}

Server {

    asculta 443;

    ssl activat;
    ssl_certificate /cert/device.crt;
    ssl_certificate_key /cert/device.key;

    client_max_body_size 2G;
    keepalive_timeout 5;

    access_log /frontend/nginx-access.log;
    error_log /frontend/nginx-error.log;

    Locație / {
        root/frontend;
        try_files $uri /index.html;
    }

    locație /api/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $schema;
        proxy_set_header Gazdă $http_host;
        proxy_buffering dezactivat;
        proxy_request_buffering dezactivat;
        proxy_redirect dezactivat;
        proxy_pass http://hello_django;
    }

}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.