在 nginx 反向代理中根据 cookie 名称删除 cookie

在 nginx 反向代理中根据 cookie 名称删除 cookie

我对 nginx 还不太熟悉,我正在尝试将其设置为反向代理服务器。到目前为止,我已将 apache 作为后端服务器运行在 8080 上,将 nginx 作为端口 80 运行。

我的网站使用了很多我无法控制的 cookie...我正在使用 Expression Engine CMS,它不允许我禁用我不想要的 cookie(不想用 EE 核心代码覆盖)。

假设我的主页上的典型点击会返回我不使用的 cookies A、B 和 C。有时我还会返回我需要的 cookies D 和 E。

我想要设置 nginx 来隐藏响应中的 cookie A、B 和 C,并且仅当请求中没有 cookie 或 cookie D 和 E 为空时才返回缓存内容。

在 nginx 下可以设置吗?

到目前为止,我的配置中有这个,它会忽略任何 cookie。我只想忽略或隐藏某些 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_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 实例,因此无法测试。

资料来源:

相关内容