request-cookies-filter: Подробный контроль запросов с помощью cookie
Установка Debian/Ubuntu
Эти документы относятся к пакету APT nginx-module-request-cookies-filter, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте репозиторий APT, как описано в настройке репозитория APT.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-request-cookies-filter
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|--------------------|-------------|-----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
Имя
ngx_http_request_cookies_filter_module
Модуль NGINX для подробного контроля запросов с помощью cookie.
Содержание
- ngx_http_request_cookies_filter_module
- Имя
- Содержание
- Статус
- Синопсис
- Установка
- Директивы
- set_request_cookie
- add_request_cookie
- modify_request_cookie
- clear_request_cookie
- Переменные
- $filtered_request_cookies
- Автор
- Лицензия
Статус
Этот модуль Nginx в настоящее время считается экспериментальным. Проблемы и запросы на изменения приветствуются, если вы столкнетесь с какими-либо проблемами.
Синопсис
http {
server {
listen 80;
server_name example.com;
location / {
# Если cookie с именем "a" существует, установить его в 1. В противном случае добавить cookie с именем "a" со значением 1.
set_request_cookie a 1;
# Если cookie с именем "b" существует, ничего не делать. В противном случае добавить cookie с именем "a" со значением 1.
add_request_cookie b 2;
# Если cookie с именем "c" существует, установить его в 3. В противном случае ничего не делать.
modify_request_cookie c 3;
# Если cookie с именем "d" существует, удалить его. В противном случае ничего не делать.
clear_request_cookie d;
# Условная фильтрация. Применяется только если переменная $http_a не пуста или не равна '0'.
set_request_cookie e 4 if=$http_a;
# Отправить отфильтрованные cookie на upstream.
proxy_set_header Cookie $filtered_request_cookies;
proxy_pass http://127.0.0.1:8080;
}
}
}
Директивы
set_request_cookie
Синтаксис: set_request_cookie cookie_name value [if=condition];
По умолчанию: —
Контекст: http, server, location
Устанавливает значение cookie. Если cookie уже существует, он будет изменен.
Имена cookie чувствительны к регистру, как указано ниже.
add_request_cookie
Синтаксис: add_request_cookie cookie_name value [if=condition];
По умолчанию: —
Контекст: http, server, location
Добавляет новую cookie. Если cookie уже существует, операция игнорируется.
modify_request_cookie
Синтаксис: modify_request_cookie cookie_name value [if=condition];
По умолчанию: —
Контекст: http, server, location
Изменяет значение существующей cookie. Если cookie не существует, операция игнорируется.
clear_request_cookie
Синтаксис: clear_request_cookie cookie_name [if=condition];
По умолчанию: —
Контекст: http, server, location
Удаляет cookie из заголовков запроса.
Переменные
$filtered_request_cookies
Строка отфильтрованных cookie, разделённых точкой с запятой. Содержит финальную строку cookie после применения всех правил фильтрации.
Если правила фильтрации не применяются, переменная содержит оригинальную строку cookie, как $http_cookie.
Пример:
location / {
set_request_cookie user "test_user";
add_request_cookie theme "dark";
# будет "user=test_user; theme=dark", если в запросе нет никаких cookie.
proxy_set_header Cookie $filtered_request_cookies;
proxy_pass http://backend;
}