如何从nginx响应中删除某些cookie

Mar*_*ski 10 cookies reverse-proxy nginx

我有nginx设置为反向代理服务器,我想删除备份服务器上设置的某些cookie(apache)

我的网站使用了很多我无法控制的cookie(Expression Engine CMS,不要问我为什么).我想删除一些cookie(比如饼干AB和C)并保留其他一些(cookies 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;
Run Code Online (Sandbox Code Playgroud)

...

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;
}
Run Code Online (Sandbox Code Playgroud)

Fle*_*der 5

尽管您已经提到切换到Varnish来完成所需的功能,但正确的答案应该是使用,headers-more-nginx-module它基本上可以使您与Varnish函数相同(甚至更多)。

  • 请提供一个示例,说明如何使用此模块来实现 OP 的目标。(我看不出有什么办法可以用这个模块只删除一个 cookie,这确实很有帮助——尽管这个问题已经被关闭,但谷歌仍然把它放在搜索结果的顶部。) (2认同)