Назад | Перейти на главную страницу

Обратный HTTP-прокси nginx не кэширует изображения, сгенерированные php

Я тестирую создание кеша в 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!