如何从nginx响应中删除特定的cookie

10
我已经将nginx设置为反向代理服务器,我想删除在后端服务器(apache)上设置的某些cookie。
我的网站使用了很多cookie,而我无法控制(Expression Engine CMS,不要问我为什么)。我想删除其中的一些cookie(比如说A、B和C),并保留其他一些cookie(比如D和E)。
之后,我将设置nginx只在请求没有cookie时响应缓存内容。
你有任何想法如何做到这一点吗?谢谢。
到目前为止,在我的配置文件中,我有:
proxy_cache_path /opt/nginx/cache levels=1:2 keys_zone=mycache:20m max_size=1G;
proxy_temp_path /opt/nginx/tmp_cache/;
proxy_ignore_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;
}

3
最终使用了带有header模块的varnish。该模块有一个名为header.remove()的函数,您可以在其中针对特定的cookie。这是模块在github上的链接:https://github.com/varnish/libvmod-header。 - Martin Taleski
1个回答

4
尽管您已经提到使用Varnish来实现所需功能,但正确的答案应该是使用headers-more-nginx-module。它基本上可以让您执行与Varnish相同的功能(并且更多)。请注意保留HTML标记。

2
请提供一个使用此模块实现OP目标的示例。 (我无法看到使用此模块仅删除一个cookie的方法,这将非常有帮助-尽管此问题已关闭,但它仍然是Google搜索结果的首选。) - Alice Purcell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接