Я тестирую создание кеша в nginx, и он отлично работает в обоих каталогах, которые я настроил, за исключением следующего: когда я пытаюсь кешировать изображение, сгенерированное php, оно просто действует как прокси для моего сервера apache, на котором запущено изображение php -сценарий генерации. Он отлично работает с любыми статическими html, css, js или текстовыми файлами. Как я могу заставить nginx кэшировать изображения, сгенерированные php? Я думаю, что в моем поколении PHP может чего-то не хватать, чтобы nginx считал его кешируемым файлом, но не знаю, что делать дальше.
Вот мой nginx.conf:
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
proxy_cache_path /var/www/cache/muncherelli/cdn levels=1:2 keys_zone=muncherelli:8m max_size=1000m inactive=600m;
proxy_cache_path /var/www/cache/mi/client/images levels=1:2 keys_zone=miclient:8m max_size=1000m inactive=600m;
proxy_temp_path /var/www/cache/tmp;
server {
location /muncherelli/cdn/ {
proxy_pass http://muncherelli.com/wp-content/;
proxy_cache muncherelli;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
location /mi/client/images/ {
proxy_pass http://client.images.example.com/;
proxy_cache miclient;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
}
}
и часть создания изображения моего php-скрипта:
$img = imagecreatefromjpeg($full_image_path);
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);
Как мне заставить nginx кэшировать и эти изображения?
Скорее всего, какой-то дополнительный заголовок мешает nginx кэшировать ответ.
Мне тоже пришлось добавить свой ответ, я отлаживал 2 недели (правда, к сожалению).
php-страницы (или другие), на которых
setcookie()
НЕ кешируются по умолчанию в кеше / обратном прокси nginx.
У меня был файл cookie «login_return_url» на каждой странице с подробными сведениями о листинге (более 500 000), и я не понимал, почему сайт работает медленнее и получает все меньше и меньше трафика и посещений Google, несмотря на кеширование, которое, по-видимому, работало нормально.
И я в основном был авторизован (cookie возврата входа не требовался), поэтому я получил кешированные страницы, а все остальные - нет.
Спасибо @muncherelli!