问题是 nginx 不显示图像,并且在某些文件夹上显示 404 未找到。当我从配置中删除缓存时,一切正常。尝试使用此配置将 nginx 配置为缓存静态文件
location ~* \.(?:css|cur|js|jpg|jpeg|webp|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
expires 1y;
access_log off;
add_header Cache-Control "public";
tcp_nodelay off;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
# pass PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_intercept_errors on;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
这是错误日志
2021/08/17 11:08:10 [error] 278986#278986: *3642 open() "/var/www/website/public/cache/medium/product/347/rC0dMIdOJIJNSmpKgm9pVqKVE59HKAl8SKujwxHF.jpg" failed (2: No such file or directory), client: 95.85.108.178, server: ozan.com.tm, request: "GET /cache/medium/produ
ct/347/rC0dMIdOJIJNSmpKgm9pVqKVE59HKAl8SKujwxHF.jpg HTTP/2.0", host: "www.website.tm", referrer: "https://www.website.tm/"
nginx 显示来自源的图像: https://website.tm/storage/velocity/category_icon_path/77/5wiasmLf6hQGAsjsTV4jXsjnG0ELm5ak0rgpV7c2.png
nginx 不显示来自: https://website.tm/cache/medium/product/353/jtTzvdT8ZmB6Lu7wFKj969Uzj0qqu1qRUt2CxEbz.jpg
答案1
您的图像位置块缺少try_files
指令,该指令告诉 nginx 应该为到达该位置的请求提供什么服务。
添加
try_files $uri $uri/ =404;
到location
街区。