Удалить куки по имени куки в обратном прокси nginx

Я довольно новичок в nginx и пытаюсь настроить его как обратный прокси-сервер. До сих пор у меня есть apache, работающий в качестве внутреннего сервера на 8080 и nginx на порту 80.

На моем веб-сайте используется много файлов cookie, которые я не контролирую... Я использую CMS Expression Engine, и он не позволяет мне отключить файлы cookie, которые мне не нужны (не хочу использовать код ядра EE)).

Допустим, что типичный хит на моей домашней странице возвращает файлы cookie A, B и C, которые я не использую. Иногда у меня также есть печенье D и E, которые мне нужны.

Я хочу настроить nginx, чтобы скрывать файлы cookie A, B и C из ответа и возвращать кэшированное содержимое, только если запрос не содержит файлов cookie или файлы cookie D и E пусты.

Это возможно настроить под nginx?

Пока у меня есть это в моем конфиге, который игнорирует любые куки. Я просто хочу игнорировать или скрывать определенные куки:

proxy_cache_path /opt/nginx/cache levels=1:2 keys_zone=mycache:20m max_size=1G;
proxy_temp_path /opt/nginx/tmp_cache/;
proxy_hide_headers Expires Cache-Control Set-Cookie;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_bypass $cookie_nocache;
proxy_no_cache $cookie_nocache;

...

location / {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cache mycache;
    proxy_cache_valid  200 302  6h;
    proxy_cache_valid  404      1m;
    proxy_pass http://x.x.x.x:8080;
}

1 ответ

Разве нельзя было бы явно установить заголовки cookie? Так что-то вроде:

add_header Set-Cookie "A=deleted; Expires=Thu, 01-Jan-1970 00:00:01 GMT; Path=/; Domain=.foo.com
add_header Set-Cookie "B=deleted; Expires=Thu, 01-Jan-1970 00:00:01 GMT; Path=/; Domain=.foo.com
add_header Set-Cookie "C=deleted; Expires=Thu, 01-Jan-1970 00:00:01 GMT; Path=/; Domain=.foo.com

Вы могли бы использовать proxy_set_header с названием заголовка "Cookie" вместо add_header , если это не сработает. У меня не запущен экземпляр nginx для разработки, поэтому я не могу протестировать..

Источники:

Другие вопросы по тегам