Задать вопрос

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

Хочу реализовать вот такую схему на 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.

Может кто подскажет как корректно это сделать?
  • Вопрос задан
  • 2969 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    DevOps для эксплуатации и разработки
    6 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик буткемп
    4 месяца
    Далее
  • Skillbox
    Старт в DevOps: системное администрирование для начинающих
    4 месяца
    Далее
  • OTUS
    Инфраструктура высоконагруженных систем
    5 месяцев
    Далее
  • Skillbox
    Python-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
AterCattus
@AterCattus
Люблю быстрый backend
proxy_cache_key с указанием $cookie_csplthash для кеширования с учетом авторизации.
Насчет Etag уже не скажу. Сам nginx etag поддерживает, а в кеше хранит заголовки, отданные backend'ом.
Вообще, у nginx есть параметры $sent_http_HEADER. Может их в ключ кеша внести…
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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