ฉันต้องการแคชไฟล์คงที่โดยใช้ Nginx แต่ฉันไม่สามารถทำให้มันใช้งานได้
นี่เป็นของฉัน nginx.conf
:
ผู้ใช้ www-data;
worker_processes อัตโนมัติ
pid /run/nginx.pid;
รวม /etc/nginx/modules-enabled/*.conf;
เหตุการณ์ {
worker_connections 768;
#multi_accept บน;
}
http {
#GZIP
เปิด gzip;
gzip_vary บน;
gzip_proxyed ใด ๆ ;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
แอปพลิเคชัน gzip_types/แอปพลิเคชัน javascript/แอปพลิเคชัน json/แอปพลิเคชัน ld+json/แบบอักษร xml/แบบอักษร eot/แบบอักษร otf/ข้อความ ttf/ข้อความ css/ข้อความจาวาสคริปต์/ข้อความธรรมดา/xml;
# เซิร์ฟเวอร์
เซิร์ฟเวอร์ {
ฟัง 80;
server_name example.com;
ถ้า ($http_host ~* ^www\.(.*)$ )
{
ส่งคืน 301 https://$1$request_uri;
}
ส่งคืน 301 https://$http_host$request_uri;
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl;
ถ้า ($http_host ~* ^www\.(.*)$ )
{
ส่งคืน 301 $scheme://$1$request_uri;
}
#SSL
ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/example.com/example.com.key;
server_name example.com;
# ส่งทราฟฟิกทั้งหมดไปยังเว็บแอปพลิเคชันของฉัน
ที่ตั้ง / {
proxy_set_header โฮสต์ $host;
proxy_pass http://localhost:8080;
}
#เบราว์เซอร์แคช
ตำแหน่ง ~* \.(js|css)$ {
หมดอายุ 180d;
add_header Pragma "สาธารณะ";
add_header แคชควบคุม "สาธารณะ";
}
ตำแหน่ง ~* \.(jpg|jpeg|png|webp|woff|woff2|ttf)$ {
หมดอายุ 365d;
add_header Pragma "สาธารณะ";
add_header แคชควบคุม "สาธารณะ";
}
}
}
ปัญหาอยู่ที่ส่วน "การแคชเบราว์เซอร์" เมื่อเปิดใช้งานบล็อกโค้ดนี้ เว็บไซต์ของฉันโหลด แต่ไฟล์ css, ไฟล์จาวาสคริปต์ และรูปภาพทั้งหมดส่งคืน 404 มันเหมือนกับว่าไฟล์เหล่านั้นไม่สนใจฉัน ที่ตั้ง /
.
ฉันสามารถแก้ไขปัญหานี้ได้โดยการคัดลอก/วาง
proxy_set_header โฮสต์ $host;
proxy_pass http://localhost:8080;
ในทั้งหมดของฉัน ที่ตั้ง
-บล็อก แต่นั่นไม่ได้สวยงามนักและทำให้เว็บไซต์ของฉันช้าลงมาก...
ฉันยังพยายามย้ายทั้งสอง ที่ตั้ง
-บล็อกสำหรับเบราว์เซอร์ที่แคชในบล็อก ที่ตั้ง \
ดังนั้นคนหลังจะทำหน้าที่เป็น 'ผู้ปกครอง' แต่นั่นไม่ได้ทำให้พฤติกรรมของรูปภาพ ฯลฯ กลับ 404
ฉันจะกำหนดค่าการแคชไฟล์สแตติกใน Nginx ได้อย่างไร
แก้ไข:
ฉันเพิ่มสิ่งต่อไปนี้ในของฉัน http
-บล็อก:
แผนที่ $uri $cache_control {
~/Website/assets/media/images "สาธารณะ ไม่มีการเปลี่ยนแปลง";
}
แผนที่ $uri $หมดอายุ {
~/เว็บไซต์/สินทรัพย์/สื่อ/รูปภาพ 365d;
}
เพิ่มสิ่งต่อไปนี้ในของฉัน เซิร์ฟเวอร์
-บล็อก:
หมดอายุ $expire;
add_header แคชควบคุม $cache_control;
ไม่มีอะไรถูกแคช