我对 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
如果不起作用,您可以使用。我没有在这里运行开发 nginx 实例,因此无法测试。proxy_set_header
标头名称“Cookie”代替add_header
资料来源: