nginx 重写 phpphumb 和缓存控制

nginx 重写 phpphumb 和缓存控制

我想使用 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;

在我评论这些行之后,重写就可以正常工作。

相关内容