Помогите с настройкой

Хочу реализовать вот такую схему на nginx:

1. клиент заходит на страницу сайта

2. nginx проверяет есть ли эта страница в его кеше:
2.1 если нет обращается к приложению, получает страницу и etag, отдает клиенту
2.2 если страница есть отправляет заголовок приложению If-None-Match для проверки etag, который он запомнил на шаге 2.1
2.2.1 если приложение ответило 304 Not Modified отдает клиенту страницу из своего кеша
2.2.2 если приложение ответило 200 OK (страница изменилась) то работает по схеме п.2.1

3. один и тот же url может содержать разный контент для авторизированных и неавторизированных пользователей.
для их разграничения используется переменная в cookie «csplthash». ее просто нужно добавить в ключ кеша nginx (я как понимаю это не сложно).

4. при обращении к url nginx должен передавать приложению все заголовки и куки, а отдавать html из своего кеша предварительно провалидиров его через etag.

Может кто подскажет как корректно это сделать?
  • Вопрос задан
  • 2963 просмотра
Пригласить эксперта
Ответы на вопрос 1
AterCattus
@AterCattus
Люблю быстрый backend
proxy_cache_key с указанием $cookie_csplthash для кеширования с учетом авторизации.
Насчет Etag уже не скажу. Сам nginx etag поддерживает, а в кеше хранит заголовки, отданные backend'ом.
Вообще, у nginx есть параметры $sent_http_HEADER. Может их в ключ кеша внести…
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы