2014-05-19 27 views
0

我已經在我的Linux服務器上安裝了Varnish,併爲我的網站(包括wordpress網站(www.mywordpress.com))進行了配置,並且工作正常。現在我已經在我的網站(www.mywordpress.com/mantis)下安裝了螳螂錯誤跟蹤器。但是當我試圖以默認用戶(管理員/ root)登錄到MantisBT時,它顯示一個錯誤,如「您的瀏覽器不知道如何處理cookie或拒絕處理它們」。如何設置Varnish異常或允許Cookie(在default.vcl中)用於Mantis url。我default.vcl文件看起來像:用螳螂蟲跟蹤器清漆cookie問題


###my default.vcl file: 
backend default { 
.host = "127.0.0.1"; 
.port = "8080"; 
} 
backend master { 
.host = "127.0.0.1"; 
.port = "8080"; 
} 
acl purge { 
    "localhost"; 
} 
sub vcl_recv { 
if (req.request == "PURGE") { 
    if (!client.ip ~ purge) { 
     error 405 "Not allowed."; 
    } 
    return(lookup); 
} 
if (req.restarts == 0) { 
    if (req.http.x-forwarded-for) { 
     set req.http.X-Forwarded-For = 
     req.http.X-Forwarded-For + ", " + client.ip; 
    } else { 
     set req.http.X-Forwarded-For = client.ip; 
    } 
} 


### do not cache these files: 
if (req.url ~ "/svn" || req.http.Authorization || req.http.Authenticate) 
{ 
    return (pass); 
} 

##never cache the admin pages, or the server-status page 
if (req.url ~ "wp-(admin|login)" || req.http.Content-Type ~ "multipart/form-data") 
{ 
    set req.backend = master; 
    return(pass); 
} 

if (req.url ~ "opportunity-attachments" || req.http.Content-Type ~ "multipart/form-data") 
{ 
    set req.backend = master; 
    return(pass); 
} 

if (req.url ~ "^phpmyadmin") { 
    set req.backend = master; 
    return(pipe); 
} 

if (req.url ~ "^/login") { 
    set req.backend = master; 
    return(pipe); 
} 

## always cache these images & static assets 
if (req.request == "GET" && req.url ~ "\.(css|js|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") { 
    remove req.http.cookie; 
    return(lookup); 
} 
if (req.request == "GET" && req.url ~ "(xmlrpc.php|wlmanifest.xml)") { 
    remove req.http.cookie; 
    return(lookup); 
} 

#never cache POST requests 
if (req.request == "POST") 
{ 
    return(pass); 
} 
#DO cache this ajax request 
if(req.http.X-Requested-With == "XMLHttpRequest" && req.url ~ "recent_reviews") 
{ 
    return (lookup); 
} 

#dont cache ajax requests 
if(req.http.X-Requested-With == "XMLHttpRequest" || req.url ~ "nocache" || req.url ~ "(control.php|wp-comments-post.php|wp-login.php|bb-login.php|bb-reset-password.php|register.php)") 
{ 
    return (pass); 
} 

if (req.http.Cookie && req.http.Cookie ~ "wordpress_") { 
    set req.http.Cookie = regsuball(req.http.Cookie, "wordpress_test_cookie=", "; wpjunk="); 
} 
### don't cache authenticated sessions 
if (req.http.Cookie && req.http.Cookie ~ "(wordpress_|PHPSESSID)") { 
    return(pass); 
} 

### parse accept encoding rulesets to make it look nice 
if (req.http.Accept-Encoding) { 
    if (req.http.Accept-Encoding ~ "gzip") { 
     set req.http.Accept-Encoding = "gzip"; 
    } elsif (req.http.Accept-Encoding ~ "deflate") { 
     set req.http.Accept-Encoding = "deflate"; 
    } else { 
     # unkown algorithm 
     remove req.http.Accept-Encoding; 
    } 
} 


if (req.http.Cookie) 
{ 
    set req.http.Cookie = ";" + req.http.Cookie; 
    set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";"); 
    set req.http.Cookie = regsuball(req.http.Cookie, ";(vendor_region|PHPSESSID|themetype2)=", "; \1="); 
    set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", ""); 
    set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", ""); 

    if (req.http.Cookie == "") { 
     remove req.http.Cookie; 
    } 
} 

if (req.url ~ "^/$") { 
    unset req.http.cookie; 
} 
return(lookup); 
} 

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; 

} 

} 

回答

2

首先,改變這種情況,這是任何解封其中的cookie裏面沒有WP-登錄或可溼性粉劑管理員:

if (!(req.url ~ "wp-(login|admin)")) { 
    unset req.http.cookie; 
} 

到例如:

if (!(req.url ~ "wp-(login|admin)") || !(req.url ~ "mantis")) { 
    unset req.http.cookie; 
} 

(其中'||'表示OR,'〜'me答約等於,和 'req.url' - 請求的URL)

和vcl_recv(無論身在何處,把它放在beggining),忽略緩存/mantis網址:

sub vcl_recv { 

    ... 

    if (req.url ~ "/mantis") 
    { 
     return (pass); 
    } 

    ... 
} 

,並重新啓動清漆(通常sudo service varnish restartubuntu)。再次檢查,它應該沒問題(如果它不工作,請清理瀏覽器的Cookie和緩存)。

...而且,爲什麼螳螂不在wp-admin目錄中?它是一個WordPress插件?

+0

這些更改解決了我的問題...謝謝.... – user1002805