fballiano / docker-magento2

Cluster ready Magento2 + Varnish 7 + PHP 8.1 + Redis 6.2 + Elasticsearch 7.17 + SSL
355 stars 164 forks source link

Varnish5 #31

Closed skapin closed 5 years ago

skapin commented 5 years ago

I have foudn out that this stack use your vanish version. You have upgrade to varnish5, which is not handled by the VCL file nor the VARNISH.php script downloaded from turpentile extension.

Furthermore, the turpentine extension (the socker.php renamed varnish.php) now use Mage::getStoreConfig() and ::helper() which is NOT defined by you MAGE class defined in updatenode.php

I'm trying to makes things works again by pooling an old Socket.php(varnish.php) file form turpentine extension

skapin commented 5 years ago

This is what i have after some trickery (on CRON contenaire) shoudl the VCL be mapped to CRON too ? What is the comportement of the updatenode and which config he is using ?


root@21a7126fcb8e:/var/www/html# /usr/local/bin/php /updatenodes.php
"vcl.inline" "autogenated1563983651" "vcl 4.0;import std;import directors;#AUTOGENERATED_START\n#AUTOGENERATED_ENDacl purge {    \"web\";}sub vcl_recv {    if (req.method == \"PURGE\") {        if (client.ip !~ purge) {            return (synth(405, \"Method not allowed\"));        }        if (!req.http.X-Magento-Tags-Pattern) {            return (synth(400, \"X-Magento-Tags-Pattern header required\"));        }        ban(\"obj.http.X-Magento-Tags ~ \" + req.http.X-Magento-Tags-Pattern);        return (synth(200, \"Purged\"));    }    if (req.method != \"GET\" &&        req.method != \"HEAD\" &&        req.method != \"PUT\" &&        req.method != \"POST\" &&        req.method != \"TRACE\" &&        req.method != \"OPTIONS\" &&        req.method != \"DELETE\") {          /* Non-RFC2616 or CONNECT which is weird. */          return (pipe);    }    # We only deal with GET and HEAD by default    if (req.method != \"GET\" && req.method != \"HEAD\") {        return (pass);    }    # Bypass shopping cart and checkout requests    if (req.url ~ \"/checkout\") {        return (pass);    }    # normalize url in case of leading HTTP scheme and domain    set req.url = regsub(req.url, \"^http[s]?://\", \"\");    # collect all cookies    std.collect(req.http.Cookie);    # static files are always cacheable. remove SSL flag and cookie        if (req.url ~ \"^/(pub/)?(media|static)/.*\\.(ico|css|js|jpg|jpeg|png|gif|tiff|bmp|mp3|ogg|svg|swf|woff|woff2|eot|ttf|otf)$\") {        unset req.http.Https;        unset req.http.Cookie;    }    return (hash);}sub vcl_hash {    if (req.http.cookie ~ \"X-Magento-Vary=\") {        hash_data(regsub(req.http.cookie, \"^.*?X-Magento-Vary=([^;]+);*.*$\", \"\\1\"));    }}sub vcl_backend_response {    if (beresp.http.content-type ~ \"text\") {        set beresp.do_esi = true;    }    if (bereq.url ~ \"\\.js$\" || beresp.http.content-type ~ \"text\") {        set beresp.do_gzip = true;    }    # cache only successfully responses and 404s    if (beresp.status != 200 && beresp.status != 404) {        set beresp.ttl = 0s;        set beresp.uncacheable = true;        return (deliver);    } elsif (beresp.http.Cache-Control ~ \"private\") {        set beresp.uncacheable = true;        set beresp.ttl = 86400s;        return (deliver);    }    if (beresp.http.X-Magento-Debug) {        set beresp.http.X-Magento-Cache-Control = beresp.http.Cache-Control;    }    # validate if we need to cache it and prevent from setting cookie    # images, css and js are cacheable by default so we have to remove cookie also    if (beresp.ttl > 0s && (bereq.method == \"GET\" || bereq.method == \"HEAD\")) {        unset beresp.http.set-cookie;        if (bereq.url !~ \"\\.(ico|css|js|jpg|jpeg|png|gif|tiff|bmp|gz|tgz|bz2|tbz|mp3|ogg|svg|swf|woff|woff2|eot|ttf|otf)(\\?|$)\") {            set beresp.http.Pragma = \"no-cache\";            set beresp.http.Expires = \"-1\";            set beresp.http.Cache-Control = \"no-store, no-cache, must-revalidate, max-age=0\";            set beresp.grace = 1m;        }    }    return (deliver);}sub vcl_deliver {    if (resp.http.X-Magento-Debug) {        if (resp.http.x-varnish ~ \" \") {            set resp.http.X-Magento-Cache-Debug = \"HIT\";        } else {            set resp.http.X-Magento-Cache-Debug = \"MISS\";        }    } else {        unset resp.http.Age;    }    unset resp.http.X-Magento-Debug;    unset resp.http.X-Magento-Tags;    unset resp.http.X-Powered-By;    unset resp.http.Server;    unset resp.http.X-Varnish;    unset resp.http.Via;    unset resp.http.Link;}\n\n"
Fatal error: Uncaught Error: Call to undefined method Mage::helper() in /varnish.php:494
Stack trace:
#0 /varnish.php(163): Nexcessnet_Turpentine_Model_Varnish_Admin_Socket->_command('vcl.inline', 200, 'autogenated1563...', 'vcl 4.0;import ...')
#1 /updatenodes.php(78): Nexcessnet_Turpentine_Model_Varnish_Admin_Socket->__call('vcl_inline', Array)
#2 {main}
  thrown in /varnish.php on line 494
fballiano commented 5 years ago

I've updated the VCL bundled in this project (it was based on varnish4 while the containers are already varnish 5) but I'm not sure why you talk about turpentine, this infrastructure is for M2, not M1