Varnish Konfiguration für Shopware

Hallo zusammen, ich bin aktuell dabei, Shopware in Verbindung mit Varnish einzurichten. Hat jemand bereits ein “Kochbuch” für die Anpassungen der Varnish default.vcl erstellt, damit Varnish zusammen mit Shopware vernünftig läuft? Damit quasi auch nur die Inhalte von Shopware gecached werden, die gecached werden dürfen. Danke euch schonmal. Viele Grüße, Florian Ressel

Soweit mir bekannt ist nicht. Es gab einen Ansatz hier im Forum: allgemein-f25/varnish-nur-fur-enterprise-t8208.html Bevor Ihr aber an Varnish rumbastelt, solltet Ihr erst einmal so eure Webseite optimieren :slight_smile: https://developers.google.com/speed/pag … ab=desktop

Hallo Florian, hier eine default.vcl für Varnish 4.x + Shopware 4: --------------------------------------------- vcl 4.0; backend default { .host = “*** Public IP ***”; .port = “*** Upstream Port ***”; .connect_timeout = 16s; .first_byte_timeout = 96s; .between_bytes_timeout = 8s; } acl purge { “127.0.0.1”; “localhost”; } sub vcl_recv { if (req.url ~ “/backend/*” || req.url ~ “^/phpmyadmin”) { return (pipe); } if (req.url ~ “^/admin/content/backend/export”) { return (pipe); } unset req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; set req.http.Cookie = regsuball(req.http.Cookie, “(^|;\s*)(_[_a-z]+|has_js|is_unique)=[^;]*”, “”); set req.http.Cookie = regsuball(req.http.Cookie, “;(session-[a-z0-9])=”, “; \1=”); set req.http.Cookie = regsuball(req.http.Cookie, “;(sUniqueID)=”, “; \1=”); set req.http.Cookie = regsuball(req.http.Cookie, “;(shop)=”, “; \1=”); set req.http.Cookie = regsuball(req.http.Cookie, “;(PHPSESSID)=”, “; \1=”); set req.http.Cookie = regsuball(req.http.Cookie, “;(SHOPWAREBACKEND-[a-z0-9])=”, “; \1=”); set req.http.Cookie = regsub(req.http.Cookie, “^;\s*”, “”); if (req.url ~ “.(css|js|png|gif|jp(e)?g)”) { unset req.http.cookie; } if (req.method == “PURGE”) { if (!client.ip ~ purge) { return (synth(405, “Not Allowed”)); } return (purge); } if (req.http.Accept-Encoding) { if (req.url ~ “.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$”) { unset req.http.Accept-Encoding; } elsif (req.http.Accept-Encoding ~ “gzip”) { set req.http.Accept-Encoding = “gzip”; } elsif (req.http.Accept-Encoding ~ “deflate” && req.http.user-agent !~ “MSIE”) { set req.http.Accept-Encoding = “deflate”; } else { unset req.http.Accept-Encoding; } } if (req.url ~ “/backend/*”) { return (pipe); } set req.http.Surrogate-Capability = “shopware=ESI/1.0”; if (req.http.Cache-Control ~ “no-cache”) { return (pass); } return (pass); } sub vcl_backend_response { if (bereq.http.host ~ “^http(s)?.//min” || bereq.http.host ~ “^http(s)?.//cdn” || bereq.url ~ “/templates/” || bereq.url ~ “^/media/image/.*”) { set beresp.ttl = 604800h; set beresp.http.Cache-Control = “max-age=604800”; unset beresp.http.set-cookie; return(deliver); } } sub vcl_deliver { } sub vcl_backend_response { set beresp.grace = 2m; } sub vcl_hit { } sub vcl_miss { } --------------------------------------------- Demo unter http://sw.aixpro.de - (Shopware 4.3.2 Community Edition) - Backend Login auf Anfrage. VG

Das macht eigentlich nur Sinn mit der Shopware-Enterprise-Version: https://timmehosting.de/blog/wie-sinnvo … -mit-nginx

Sorry wenn ich den Beitrag wieder ausgrabe - ich versucht gerade shopware 5 mit Varnish zum Laufen zu bringen. Bisher leider mit sehr mäßigem Erfolg - insbesondere der checkout macht mir sehr viele Schwierigkeiten. Da ich nur Informationen zu Shopware 4.x finden konnte wäre ich für alle Tipps die sich auch Shopware 5 und Varnish beziehen sehr dankbar.

VG

Hi,

ist hier dokumentiert: Varnish Setup

Besten Gruß,

Daniel

Hallo Daniel,

vielen Dank - ich dachte der Artikel bezieht sich nur auf Shopware 4.x 

Ich habe leider weiterhin diverse Probleme mit dem Checkout - bspw. lässt sich die Zahlungsart nicht ändern, manchmal ist das Login nicht möglich, manchmal wirkt es für mich als würden die Sessions komplett gecached werden d.h. sessions zwischen Besuchern verschoben werden etc.

Ist die Doku nur als Ausgangsbasis gemeint und die auftretenden Probleme muss ich selbst umgehen oder sollte der Shop mit den genannten Einstellungen eigentlich komplett funktionieren?

 

Mein Setup ist produktiv: 

Nginx:80 -> Nginx 443
Nginx:443 -> Varnish:81 -> Nginx:8080

Auf test.carmodule.de
Nginx:80 -> Varnish:81 -> Nginx:8080

Das Setup ist entsprechend der verlinkten Doku erfolgt und das Nginx Setup entsprechend https://github.com/bcremer/shopware-with-nginx

Hättest du noch einen Tipp für mich was hier überhaupt den Fehler verursacht?
Ich bin mir im Moment nicht sicher ob ich den Fehler bei Shopware, bei Varnish oder bei Nginx suchen soll - wobei ich auf die Varnish config tippe da nginx + Shopware ohne Varnish ja problemlos laufen.

Vielen Dank & VG
Benjamin

Hi,

ich habe es vor ein paar Tagen noch lokal getestet, Probleme sind mir nicht bekannt. In der Regel empfiehlt es sich bei solchen Problemen immer, die möglichen Fehlerquellen zu reduzieren:

  • Frischer Standard-Shop auf lokalem Webserver
  • Varnish lokal einrichten
  • Shop auf Varnish Port konfigurieren

Die Probleme, die du beschreibst, hören sich ein wenig so an, als würde der Varnish „zu viel“ cachen - eigentlich ist das bei uns ja sehr strikt über einige gewhitelistete Controller geregelt. Der ganze WK / Account-Bereich sollten daher eigentlich eh immer live sein. 

Besten Gruß,

Daniel