Я хотел бы попросить кого-нибудь о помощи. Я просмотрел много страниц, содержащих учебные пособия по Varnish и образцы файлов VCL, но я не могу найти ничего, связанного с настройкой Varnish для Magento (по крайней мере, они не работают правильно).
Все руководства, которые я нашел, выдают много ошибок при запуске Varnish, и кажется, что они подходят для старых версий. (Также ни один из модулей Magento PageCache и Varnish Extension не работает для меня, потому что я думаю, что сам Varnish работает неправильно)
Моя проблема:
1. Я использую Varnish для кеширования интерфейса пользователя, но он нарушает почти все функции моих форм, платежного модуля, подписки на рассылку новостей и т. Д. И т. Д.
2. Я обнаружил, что изменение одного слова в "sub vcl_recv" меняет все. Слово: return (lookup). Это код моего "sub vcl_recv":
sub vcl_recv {
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;
if(server.ip ~ a168_144_38_181){
set req.backend = b168_144_38_181;
}
}
if (req.url ~ "^/images") {
unset req.http.cookie;
}
if (req.url ~ "^(/index.php)?/(admin|customer|checkout|add|product_compare|switch|___store|referer|contact|chat|payone|sendfriend|review|api|NOCACHE|post|robots.txt|j2tajaxcheckout|cron.php|varnish)") {
return(pass);
}
if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") {
set req.http.user-agent = "Mozilla";
unset req.http.Https;
unset req.http.cookie;
return (lookup);
}
if (req.request != "GET" &&
req.request != "HEAD" &&
req.request != "PUT" &&
req.request != "POST" &&
req.request != "TRACE" &&
req.request != "OPTIONS" &&
req.request != "DELETE") {
/* Non-RFC2616 or CONNECT which is weird. */
return (pipe);
}
#parse accept encoding rulesets to normalize
if (req.http.Accept-Encoding) {
if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {
# no need of compression
remove req.http.Accept-Encoding;
} elsif (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} elsif (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
} else {
# unknown algorithm
remove req.http.Accept-Encoding;
remove req.http.Cookie;
remove req.http.X-Pass;
set req.grace = 30s;
return (lookup);
}
}
Может ли кто-нибудь помочь мне с настройкой?
Любая помощь будет принята с благодарностью !!!
Спасибо. Томас
Похоже, ваш Varnish неправильно настроен
В основном вы должны передавать запросы в бэкэнд, если они не GET или HEAD
if (req.request != "GET" && req.request != "HEAD") {
return (pass);
}
Затем вы должны пересмотреть управление сеансом и передать пользователя в серверную часть, если есть какие-либо файлы cookie. Ничего не могу сказать о стандартных файлах cookie Magento, еще не работал с ними