Удалить куки по имени куки в обратном прокси 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 для разработки, поэтому я не могу протестировать..
Источники: