2014-05-19 3 views
0

J'ai installé Varnish sur mon serveur Linux et configuré pour mes sites Web, y compris un site wordpress (www.mywordpress.com) et cela fonctionne très bien. Maintenant, j'ai installé Mantis Bug Tracker sous mon site Web (www.mywordpress.com/mantis). Mais lorsque j'essaie de me connecter au MantisBT en tant qu'utilisateur par défaut (administrateur/root), il affiche une erreur du genre "Votre navigateur ne sait pas comment gérer les cookies, ou refuse de les gérer". Comment puis-je configurer une exception Vernis ou autoriser les cookies (dans default.vcl) pour les URL Mantis. Mon fichier default.vcl ressemble:Problème de cookie avec mantis bug tracker


###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; 

} 

} 

Répondre

2

D'abord, changer cela, il est tout cookie qui Décharger pas à l'intérieur wp-login ou wp-admin:

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

à quelque chose comme ceci:

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

(où '||' signifie OR, '~' moi ans égale à environ, et 'req.url' - l'URL demandée)

et vcl_recv (peu importe où, le mettre dans le beggining), ignorer la mise en cache /mantis URL:

sub vcl_recv { 

    ... 

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

    ... 
} 

et redémarrez vernis (habituellement sudo service varnish restart sur ubuntu). vérifiez à nouveau et ça devrait aller (si ça ne marche pas, nettoyez les cookies et le cache de votre navigateur).

... Et pourquoi mantis n'est pas dans le répertoire wp-admin? est-ce un plugin wordpress?

+0

Ces changements ont résolu mon problème ... Merci .... – user1002805

Questions connexes