Pular para conteúdo

request-cookies-filter: Controle refinado de cookies de requisição

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-request-cookies-filter
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-request-cookies-filter

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_request_cookies_filter_module.so;

Este documento descreve o nginx-module-request-cookies-filter v0.1.0 lançado em 06 de janeiro de 2026.


Sinopse

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

        location / {
            # Se um cookie chamado "a" existir, defina-o como 1. Caso contrário, adicione um cookie chamado "a" com valor 1.
            set_request_cookie a 1;

            # Se um cookie chamado "b" existir, não faça nada. Caso contrário, adicione um cookie chamado "a" com valor 1.
            add_request_cookie b 2;

            # Se um cookie chamado "c" existir, defina-o como 3. Caso contrário, não faça nada.
            modify_request_cookie c 3;

            # Se um cookie chamado "d" existir, exclua-o. Caso contrário, não faça nada.
            clear_request_cookie d;

            # Filtragem condicional. Somente afetado se a variável $http_a não estiver vazia ou for '0'.
            set_request_cookie e 4 if=$http_a;

            # Envie os cookies filtrados para o upstream.
            proxy_set_header Cookie $filtered_request_cookies;

            proxy_pass http://127.0.0.1:8080;
        }
    }
}

Diretrizes

Sintaxe: set_request_cookie cookie_name value [if=condition];

Padrão:

Contexto: http, server, location

Define o valor de um cookie. Se o cookie já existir, ele será modificado.

Os nomes dos cookies são sensíveis a maiúsculas e minúsculas, o mesmo abaixo.

Sintaxe: add_request_cookie cookie_name value [if=condition];

Padrão:

Contexto: http, server, location

Adiciona um novo cookie. Se o cookie já existir, a operação é ignorada.

Sintaxe: modify_request_cookie cookie_name value [if=condition];

Padrão:

Contexto: http, server, location

Modifica o valor de um cookie existente. Se o cookie não existir, a operação é ignorada.

Sintaxe: clear_request_cookie cookie_name [if=condition];

Padrão:

Contexto: http, server, location

Remove um cookie dos cabeçalhos da requisição.

Variáveis

$filtered_request_cookies

Uma string de cookies filtrados separada por ponto e vírgula. Contém a string final de cookies após a aplicação de todas as regras de filtro. Se nenhuma regra de filtro for aplicada, a variável contém a string original de cookies, como $http_cookie.

Exemplo:

location / {
    set_request_cookie user "test_user";
    add_request_cookie theme "dark";
    # será "user=test_user; theme=dark" se a requisição não contiver nenhum cookie.
    proxy_set_header Cookie $filtered_request_cookies;
    proxy_pass http://backend;
}

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-request-cookies-filter.