Как сделать, чтобы nginx (прокси) кэшировал реальный контент, а не только заголовки, когда сервер proxy_pass получает ответ http 302/301? - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь использовать nginx как временный http-кеш, чтобы минимизировать запросы к контенту. Мой контент находится на нескольких серверах, поэтому я не могу использовать статический параметр proxy_pass для прямого расположения, но вместо этого я использую переписать в php-скрипт:

rewrite      /([^/]+\.jpg)  /index.php?file=$1  break;
proxy_pass http://www.phpserver.com;

Сценарий php (это будет http://www.phpserver.com/index.php), затем возвращает перенаправление с http-кодом 301 в фактическое местоположение файла (например, http://www.contentserver1.com/filepath/file.jpg).

Проблема в том, что nginx возвращает заголовки перенаправления, а не извлекает, кэширует и возвращает фактический контент.

Итак, как мне сделать так, чтобы он получал контент с реального сервера, а не просто кэшировал заголовки?

1 Ответ

0 голосов
/ 13 апреля 2011

Nginx может работать только как прокси. Он ничего не знает о логике вашего приложения (сайта), он просто прокси-запросы и может помещать в кеш ответы.

Чтобы эта схема работала, вы должны удалить секцию rewrite из nginx и переместить эту логику на phpserver.com. phpserver должен загрузить этот файл и вывести его на nginx. Даже если это очень сложная операция, nginx будет кэшировать этот ответ, и когда будет получен следующий запрос, nginx выдаст ответ прямо из своего кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...