У меня очень простая конфигурация прокси:
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;
}
}
}
А теперь следуй за мной сюда:
Но, если мы проверим папку / var / www / cache / в это время, мы увидим, что для этого запроса не создан элемент кеша. Значит ли это, что Nginx хранит кеш для него в памяти и забыл записать в файл?
Если мы проверим / var / www / cache /, мы увидим, что файл кеша теперь наконец создан для этого запроса. Заглянув внутрь кешированного файла, мы видим, что это наше изображение.
Мое единственное объяснение этому - похоже, что Nginx кэширует ответ в памяти и не записывает в файл, когда мы обнаруживаем ошибку с помощью нашей настраиваемой error_page в прокси-ответах. Кроме того, при использовании proxy_cache_bypass он не перезаписывает кеш в памяти, поэтому последующие запросы к тому же элементу будут использовать старый кеш, который хранится в памяти, а не новый, созданный в папке кеша.
Может ли кто-нибудь сообщить мне, если я делаю что-то не так, или это действительно ошибка. Провел последние 3 дня, борясь с этим.
ОБНОВИТЬ: Backend возвращает обычный набор заголовков, который вы ожидаете от S3 в ответах 200 и 404:
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