Score:1

จะปิดใช้งานการบัฟเฟอร์อัปสตรีม Nginx + Docker + Gunicorn ได้อย่างไร

ธง ph

ฉันกำลังพยายามใช้ Nginx เป็นพร็อกซีเซิร์ฟเวอร์ระหว่างไคลเอ็นต์และ Gunicorn Nginx, Gunicorn (Django) เป็นคอนเทนเนอร์ของ Docker ปัญหาคือฉันไม่สามารถปิดการบัฟเฟอร์อัปสตรีมเมื่อฉันส่งไฟล์ขนาดใหญ่จากไคลเอ็นต์ไปยังแอป Django เวลา TTFB ค่อนข้างน้อย ดังนั้นแถบความคืบหน้าของฉัน (ซึ่งใช้เหตุการณ์ xhr.upload.progress) จะกลายเป็น 100% เร็วมาก (น้อยกว่าวินาที) จากนั้นฉันต้องรอ 30 วินาทีในขณะที่ไฟล์จะถูกอัปโหลดไปยังเซิร์ฟเวอร์ นี่คือการตั้งค่าของฉัน กรุณาช่วย. ฉันได้ลองการกำหนดค่าหลายอย่างโดยพยายามตั้งค่าขนาดบัฟเฟอร์เป็นศูนย์ ฯลฯ ตรวจสอบคำตอบมากมายใน StackOverflow แต่ไม่มีอะไรช่วยได้

นักเทียบท่า-compose.yaml

...
    บริการ:
  ฐานข้อมูล:
    ภาพ: postgres:12.4
    ปริมาณ:
      - postgres_data:/var/lib/postgresql/data/
    รีสตาร์ท: เสมอ
    พอร์ต:
      - ${DB_PORT}:${DB_PORT}
    env_file:
      - ./.env

  แบ็กเอนด์:
    สร้าง: ./src/backend
    ปริมาณ:
      - RUDZASV0021:/code/storage/RUDZASV0021
      - บันทึก:/รหัส/บันทึก
    รีสตาร์ท: เสมอ
    ขึ้นอยู่กับ:
      - ฐานข้อมูล
    env_file:
      - ./.env

  จิงซ์:
    สร้าง:
      บริบท: .
      ไฟล์นักเทียบท่า: ./src/frontend/Dockerfile
    ปริมาณ:
      - ./docker-settings/default.conf:/etc/nginx/conf.d/default.conf:ro
    รีสตาร์ท: เสมอ
    พอร์ต:
      - 80:80
      - 443:443
    ขึ้นอยู่กับ:
      - แบ็กเอนด์

ไฟล์ Docker แบ็กเอนด์

จาก python:3.8.7-slim

เวิร์คดีอาร์ /code
สำเนา .
RUN pip install -r /code/requirements.txt
รัน 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

ไฟล์ Docker ของ Nginx

จาก nginx:1.20.0

WORKDIR /ส่วนหน้า
คัดลอก ./src/frontend/dist
เวิร์คดีอาร์/ใบรับรอง
คัดลอก ./cert/device.key
สำเนา ./cert/device.crt

Nginx default.conf

ต้นน้ำ hello_django {
    แบ็กเอนด์ของเซิร์ฟเวอร์:8000 fail_timeout=0;
}

เซิร์ฟเวอร์ {
    ฟัง 80;
    ส่งคืน 301 https://$host$request_uri;
}

เซิร์ฟเวอร์ {

    ฟัง 443;

    เปิด ssl;
    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;

    ที่ตั้ง / {
        ราก / ส่วนหน้า;
        try_files $uri /index.html;
    }

    ตำแหน่ง /api/ {
        proxy_set_header X-ส่งต่อ-สำหรับ $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header โฮสต์ $http_host;
        ปิด proxy_buffering;
        ปิด proxy_request_buffering;
        ปิด proxy_redirect;
        proxy_pass http://hello_django;
    }

}

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา