Условно обновляя время истечения срока действия файлов cookie в nginx, чтобы найти время простоя

#nginx #cookies #webserver

#nginx #файлы cookie #веб-сервер

Вопрос:

Я пытаюсь реализовать решение, чтобы определить, было ли время простоя X в минутах между двумя запросами.

Для этого я планирую использовать следующий подход.

  1. Сначала установите файл cookie со стороны приложения. Время истечения срока действия этого файла cookie равно X минутам.
  2. Всякий nginx раз, когда есть запрос , я буду проверять, прошло ли время истечения срока действия файла cookie или файл cookie доступен.
  3. Если файл cookie доступен и срок его действия не истек, я снова обновлю время истечения в X минутах. В противном случае удалите файл cookie.
  4. На стороне сервера я могу проверить доступность файла cookie и, если он доступен, я могу сделать вывод, что предыдущий запрос был выполнен в течение X нескольких минут.

Для реализации этого решения мне понадобятся некоторые фрагменты кода, как показано ниже.

 if cookie-exists and cookie.expirytime gt; currentTime  Set-Cookie: MY_COOKIE=SOMEVAL; Max-Age=X*60; Secure; HttpOnly else  Drop-Cookie MY_COOKIE endif  

Как я могу реализовать эту проверку условий и модификацию файлов cookie в nginx? Можно ли без lua этого обойтись ?

Я не хочу реализовывать эту логику на стороне приложения, потому что — через nginx обслуживается несколько приложений, и я хочу сохранить общую для всех логику. Если пользователь использует какое-либо из приложений, файл cookie должен быть обновлен.

Ответ №1:

Браузеры не отправляют файлы cookie с истекшим сроком действия, поэтому Nginx никогда их не получит. Потенциально вы можете установить 2 файла cookie: один, срок действия которого истекает, и другой, который идентифицирует постоянных посетителей.

Комментарии:

1. Как я могу обновить метку времени для файла cookie? Я имею в виду — истекает время.