ฉันมีการตั้งค่าเซิร์ฟเวอร์ Nginx (openresty) ที่มีไฟล์ขนาดใหญ่
เมื่อลูกค้าต้องการไฟล์ช่วง Nginx จะส่งกลับ 200 แทนที่จะเป็น 206
นี่คือตัวอย่างการทดสอบ curl ของฉัน:
ขด -v -I -r 0- -X GET http://172.29.22.11/myBigFile.bin
* ลอง 172.29.22.11:80...
* ตั้งค่า TCP_NODELAY
* เชื่อมต่อกับพอร์ต 172.29.22.11 (172.29.22.11) 80 (#0)
> รับ /myBigFile.bin HTTP/1.1
> เจ้าภาพ: 172.29.22.11
> ช่วง: ไบต์ = 0-
> User-Agent: curl/7.68.0
> ยอมรับ: */*
>
* ทำเครื่องหมายที่บันเดิลว่าไม่รองรับการใช้งานหลายอย่าง
< HTTP/1.1 200 ตกลง
HTTP/1.1 200 ตกลง
< การเข้ารหัสการถ่ายโอน: chunked
การเข้ารหัสการถ่ายโอน: chunked
< การเชื่อมต่อ: รักษาชีวิต
การเชื่อมต่อ: มีชีวิตอยู่
< หมดอายุ: วันพุธที่ 21 ธันวาคม 2022 09:10:00 GMT
หมดอายุ: วันพุธที่ 21 ธันวาคม 2022 เวลา 09:10:00 น. GMT
< การควบคุมแคช: max-age=31536000
การควบคุมแคช: max-age=31536000
< การควบคุมการเข้าถึง-อนุญาตส่วนหัว: *
การเข้าถึง-ควบคุม-อนุญาต-ส่วนหัว: *
< การควบคุมการเข้าถึง-อนุญาต-ต้นทาง: *
การควบคุมการเข้าถึงอนุญาตแหล่งกำเนิด: *
< myCacheStatus: HIT
สถานะ myCache: HIT
< ปรัชญา: สาธารณะ
Pragma: สาธารณะ
< การควบคุมแคช: สาธารณะ
การควบคุมแคช: สาธารณะ
<
* พบส่วนเกิน: ส่วนเกิน = 448 url =/myBigFile.bin A (เนื้อหาความยาวเป็นศูนย์)
* การเชื่อมต่อ #0 ไปยังโฮสต์ 172.29.22.11 ยังคงอยู่
ฉันจะกำหนด Nginx ให้ส่งคืน 206 ที่เหมาะสมได้อย่างไร
----- การเพิ่มการกำหนดค่าของฉัน -----
ที่ตั้ง / {
ภายใน;
proxy_cache my_cache;
proxy_cache_key $uri;
# ตั้งเวลา ceching สำหรับ 200 respinse -> เป็น 7 วัน
proxy_cache_valid 200 7d;
# ล้างธงที่ฉันไม่ต้องการ
more_clear_headers 'เข้าถึง-ควบคุม-อนุญาต-ส่วนหัว';
more_clear_headers 'เข้าถึง-ควบคุม-อนุญาต-กำเนิด';
more_clear_headers 'การเข้าถึง*';
more_clear_headers 'การจัดการเนื้อหา';
more_clear_headers 'วันที่';
more_clear_headers 'x-proxy-cache';
more_clear_headers 'เซิร์ฟเวอร์';
# เพิ่มส่วนหัวเพื่อจัดการกับ CORS
add_header Access-Control-Allow-Headers '*';
add_header Access-Control-Allow-Origin '*';
# เพื่อลดแบนด์วิธ ฉันใช้การบีบอัด
เปิด gzip;
# ตั้งค่า proxy และสั่งให้ cech แม้ว่า thre จะไม่มี Cache-Control
proxy_ignore_headers X-Accel-หมดอายุ หมดอายุ การควบคุมแคช;
เปิด proxy_cache_lock;
proxy_cache_lock_timeout 0 วินาที;
proxy_cache_lock_age 200 วินาที;
อัปเดต proxy_cache_use_stale;
# เรียกใช้พร็อกซีย้อนกลับ
proxy_pass http://0.0.0.0:3000;
# ตั้งค่า ceching ท้องถิ่นในฝั่งไคลเอนต์ เราจะเริ่มที่ 365 วัน
หมดอายุ 365d;
add_header Pragma สาธารณะ;
add_header แคชควบคุม "สาธารณะ";
}