我想使用 phpthumb 生成器并为所有图像添加一些自定义过期标头
当我仅使用 phpthumb 重写时它可以工作,但是当添加缓存控制重写时无法生成新的缩略图
我的代码是:
#thumb generation
location /cache/ {
if (-f $request_filename) {
break;
}
rewrite ^/cache/(.*)$ /cache/index.php?thumb=$1 permanent;
}
对于缓存控制:
location ~* .(ico|css|js|gif|jpe?g|png)$ {
expires 7d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
}
我也尝试过这个,但没有成功。
#for phpthumb
location /cache/ {
try_files $uri @missing;
}
location @missing {
rewrite ^/cache/(.*)$ /cache/index.php?thumb=$1 permanent;
}
location ~* .(ico|css|js|gif|jpe?g|png)$ {
expires 7d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
}
有什么办法可以解决这个问题吗?谢谢,T。
答案1
经过一晚上的研究,我找到了正确的方法:)
location ~* \.(?:jpe?g|png)$ {
expires 7d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri $uri/ @thumbs;
}
location @thumbs {
rewrite ^/cache/(.*)$ /cache/index.php?thumb=$1 permanent;
}
产生错误重写的最大问题是在 nginx.conf 上:
# cache informations about FDs, frequently accessed files
# can boost performance, but you need to test those values
#open_file_cache max=200000 inactive=20s;
#open_file_cache_valid 30s;
#open_file_cache_min_uses 2;
#open_file_cache_errors on;
在我评论这些行之后,重写就可以正常工作。