ฉันกำลังใช้ NGINX ในสถานการณ์พิเศษที่ฉันใช้ reverse proxy สำหรับ Sonatype Nexus และฉันต้องการแคชไฟล์หากไฟล์มีขนาดใหญ่กว่า 10M เท่านั้น
นี่คือสิ่งที่ฉันมี:
อัพสตรีม tunnel_to_nexus_server {
เซิร์ฟเวอร์ localhost:28081;
}
ระดับแคช proxy_cache_path=1:2 keys_zone=STATIC:10m ไม่ใช้งาน=24h max_size=10g;
เซิร์ฟเวอร์ {
ฟัง 80;
เขียนใหม่ ^/nexus$ /nexus/ ถาวร;
ตำแหน่ง ~* ^/nexus(.*)$ {
proxy_pass http://tunnel_to_nexus_server $1;
proxy_set_header โฮสต์ $host;
เปิด proxy_buffering;
proxy_cache STATIC;
proxy_cache_valid 200 3650d;
หมดเวลาข้อผิดพลาด proxy_cache_use_stale invalid_header กำลังอัปเดต http_500 http_502 http_503 http_504;
}
ตำแหน่ง ~* ^/nexus/service/*$ {
หมดอายุ -1;
add_header 'การควบคุมแคช' 'ไม่มีการจัดเก็บ, ไม่มีแคช, ต้องตรวจสอบความถูกต้องอีกครั้ง, ตรวจสอบความถูกต้องของพร็อกซี, อายุสูงสุด = 0';
}
ตำแหน่ง ~* ^/nexus/*/repodata/*$ {
หมดอายุ -1;
add_header 'การควบคุมแคช' 'ไม่มีการจัดเก็บ, ไม่มีแคช, ต้องตรวจสอบความถูกต้องอีกครั้ง, ตรวจสอบความถูกต้องของพร็อกซี, อายุสูงสุด = 0';
}
}
อย่างที่คุณเห็น ฉันต้องการแคชไฟล์เกือบทั้งหมดจาก Nexus อย่างถาวร อย่างไรก็ตาม ฉันกำลังเขียนข้อยกเว้นไปยังพร็อกซีสำหรับ */repodata/*
และ /เซิร์ฟเวอร์/*
เส้นทาง แต่จริง ๆ แล้วมันจะคล้ายกันมากถ้าฉันสามารถตั้งค่า nginx เป็นแคชเฉพาะได้ min_size>10M
.
คล้ายกับว่าฉันมี max_size=10g
ฉันกำลังมองหาสิ่งที่เทียบเท่า min_size
พารามิเตอร์.