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

Я тестирую создание кэша в nginx и имею его работающий отлично в соответствии с обоими каталогами, которые я настроил кроме следующего: Когда я пытаюсь кэшировать php-сгенерированное изображение, оно просто действует как прокси к моему апачскому серверу, запускающему 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 кэшировать эти изображения также?

1
задан 6 July 2015 в 13:43
2 ответа

Скорее всего, какой-то лишний заголовок мешает nginx кешировать ответ.

3
ответ дан 3 December 2019 в 18:39

Мне тоже пришлось добавить свой ответ, две недели отлаживал (правда, к сожалению).

php-страниц (или других) с setcookie () НЕ кэшируются по умолчанию в кеше / обратном прокси nginx.

У меня был файл cookie «login_return_url» на каждой странице с описанием (более 500 000), и я не понимал, почему сайт работает медленнее, получает все меньше и меньше трафика и посещений Google, несмотря на кеширование, которое, по-видимому, работало нормально.

И я в основном был авторизован (cookie возврата входа не требовался), поэтому я получил кешированные страницы, в то время как все остальные этого не сделали.

Спасибо, @muncherelli!

0
ответ дан 13 February 2020 в 04:23

Теги

Похожие вопросы