set_request_cookie

Устанавливает значение указанного cookie: изменяет его, если он уже существует, или создаёт новый, если он не найден.

Синтаксисset_request_cookie cookie_name value [if=condition];
По умолчаниюnone
Контекстhttp, server, location
Аргументы2-3

Описание

Директива set_request_cookie является частью модуля ngx_http_request_cookies_filter_module, который предоставляет тонкий контроль над куки в запросе. Эта директива позволяет разработчикам задать значение куки в заголовках запроса с указанным именем. Если куки уже существует, директива заменит его значение на новое. Если он не существует, будет создан новый куки с указанным именем и значением.

Директива принимает необязательное условие в параметре if, которое можно использовать для управления моментом применения — оно будет применено только если указанное условие оценится в true. Это полезно в сценариях, когда изменение куки должно выполняться условно на основании других параметров запроса, таких как существующие куки или заголовки. Важно, что имена куки чувствительны к регистру, и любые изменения будут распространяться в процессе обработки запроса, что может повлиять на поведение ответа в зависимости от того, как приложение обрабатывает куки.

Директива чувствительна к контексту и может использоваться в контекстах http, server и location, что даёт гибкие варианты конфигурации в зависимости от маршрутизации и потребностей управления состоянием приложения. В целом, set_request_cookie — мощный инструмент для управления состоянием куки в приложении на базе NGINX.

Пример конфига

http {
    server {
        listen 80;
        server_name example.com;

        location / {
            set_request_cookie a 1;
            set_request_cookie e 4 if=$http_a;
            proxy_set_header Cookie $filtered_request_cookies;
            proxy_pass http://127.0.0.1:8080;
        }
    }
}

Помните, что имена куки чувствительны к регистру. Соблюдайте согласованность в наименованиях, чтобы избежать непредвиденного поведения.

При использовании параметра if убедитесь, что условие правильно определено — иначе директива может быть проигнорирована, если условие оценивается как false.

Тестирование и отладка поведения куки могут быть сложными; используйте средства логирования и отладки для проверки состояний куки.

← Ко всем директивам