这是一个nginx的proxy_cache错误?

我有一个非常简单的代理configuration:

http { proxy_cache_path /var/www/cache levels=1:2 keys_zone=s3-images-cache:50m inactive=1M max_size=1000m; proxy_temp_path /var/www/cache/tmp; server { listen 80; server_name images.example.com; location / { proxy_cache s3-images-cache; proxy_cache_key $scheme$proxy_host$uri$is_args$args; proxy_cache_bypass $http_purge_cache; proxy_cache_valid any 1y; proxy_pass http://images-example.s3.amazonaws.com; add_header X-Cache $upstream_cache_status; proxy_intercept_errors on; error_page 404 = @no_image; } location @no_image { return 403; } } } 

现在在这里跟我来:

  1. 我们要求/image.jpg。
  2. 请求被发送到/image.jpg的代理(不存在)。
  3. 后端以404响应。
  4. 调用“proxy_intercept_errors on”和“error_page 404 = @no_image”。
  5. Nginx返回403。
  6. 做另一个请求相同的图像,看到“Xcaching:HIT”设置。 我们正在清除代理caching。

但是,如果我们此时检查/ var / www / cache /文件夹,则会看到没有为此请求创buildcaching项目。 那么这是否意味着Nginx将caching保存在内存中,并忘记写入文件?

  1. 让我们上传/image.jpg到后端。
  2. 现在对该图像执行“PURGE-CACHE:1”请求。 我们看到现在我们得到的图像,而不是403“X-Cache:BYPASS”标题存在。 好。

如果我们检查/ var / www / cache /,我们将看到现在最终为这个请求创build了caching文件。 在caching的文件里面看,我们看到这是我们的形象。

  1. 现在是这个问题:让请求/image.jpg再次与一个正常的GET请求。 我们应该得到新上传的图像吗?
  2. Nginx用“X-Cache:HIT”返回403。 为什么? 它似乎是击中caching但返回其他什么不是在/ var / www /caching文件夹? 怎么样?

我唯一的解释是,似乎Nginx正在caching内存中的响应,并且当我们在代理响应中的自定义error_page出现错误时,不会写入文件。 此外,当使用proxy_cache_bypass时,它不会覆盖内存中的caching,以便后续对同一项的请求将使用存储在内存中的旧caching而不是caching文件夹中创build的新caching。

有人请让我知道如果我做错了什么,或者这真的是一个错误。 用了最后3天的战斗。

更新:后端返回您将期望从S3和200响应的正常的标头集:

404

 Connection:close Content-Type:application/xml Date:Fri, 20 Nov 2015 07:41:39 GMT Server:AmazonS3 Transfer-Encoding:chunked x-amz-id-2:bH8L/1dOVGShsGJdZZ/zS/X6UkHS+KMAxDxnPvOkIalpPphFJXr9zZ1RiV6L2a13NXoZ3QdCOeE= x-amz-request-id:D66FDBFAA9643252 

200

 Accept-Ranges:bytes Connection:keep-alive Content-Length:10533 Content-Type:image/jpeg Date:Fri, 20 Nov 2015 07:47:12 GMT ETag:"061b4dae0b2bbdf4a4fa212951f4ba79" Last-Modified:Wed, 11 Nov 2015 14:29:09 GMT Server:AmazonS3 x-amz-id-2:qsSmH/gkvql2jnj67p0vguZBXQJHfS+Yk70llBaDvbgH0xSCbvj9G9JlKn5WhWTdty0+JzApN7k= x-amz-request-id:8CF04EA869190E63