我正在新服务器中设置 Active Collab Site。设置如下
互联网> ---> varnish ----> apache
但是我无法通过 varnish 缓存登录网站。但我可以通过 apache 登录网站。
这是我的 VCL 文件
backend default { .host = "localhost"; .port = "8080"; }
acl purge { "localhost"; }
sub vcl_recv { if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed."; } return(lookup); }
if (req.url ~ "^/$") { unset req.http.cookie; } }
sub vcl_hit { if (req.request == "PURGE") { set obj.ttl = 0s; error 200 "Purged."; } }
sub vcl_miss { if (req.request == "PURGE") { error 404 "Not in cache."; }
if (!(req.url ~ "wp-(login|admin)")) { unset req.http.cookie; }
if (req.url ~ "^/[^?]+.(jpeg|jpg|png|gif|ico|js|css|txt|gz|zip|lzma|bz2|tgz|tbz|html|htm)(\?.|)$") {
unset req.http.cookie;
set req.url = regsub(req.url, "\?.$", "");
}
if (req.url ~ "^/$") { unset req.http.cookie; } }
sub vcl_fetch { if (req.url ~ "^/$") { unset beresp.http.set-cookie; }
if (!(req.url ~ "wp-(login|admin)")) { unset beresp.http.set-cookie; }}
当我尝试通过 varnish 登录时,我被重定向回登录页面。如果我输入错误的密码,它会要求输入正确的密码。
答案1
最后我找到了解决办法。
我在“sub vcl_fetch”部分下添加了以下代码。
if (beresp.http.set-cookie ~ "sessionid" || beresp.http.set-cookie ~ "csrftoken") {
return (pass);
} else {
return (deliver);
}
现在我可以通过 varnish 登录了!!!
我从这个找到了这个解决方案地点。
谢谢,
阿伦·S