{"id":788,"date":"2014-04-10T23:07:16","date_gmt":"2014-04-10T21:07:16","guid":{"rendered":"http:\/\/blog.jeremm.fr\/?p=788"},"modified":"2015-02-22T11:20:14","modified_gmt":"2015-02-22T10:20:14","slug":"sortie-varnish-4-0","status":"publish","type":"post","link":"https:\/\/blog.jeremm.fr\/?p=788","title":{"rendered":"Sortie Varnish 4.0"},"content":{"rendered":"<p>Nouvelle version majeur de varnish :<br \/>\n<a href=\"https:\/\/www.varnish-cache.org\/content\/varnish-cache-400\" title=\"https:\/\/www.varnish-cache.org\/content\/varnish-cache-400\">https:\/\/www.varnish-cache.org\/content\/varnish-cache-400<\/a><\/p>\n<p>Pour l&rsquo;installer :<\/p>\n<pre lang=\"bash\">curl http:\/\/repo.varnish-cache.org\/debian\/GPG-key.txt | apt-key add -\r\necho 'deb http:\/\/repo.varnish-cache.org\/debian\/ wheezy varnish-4.0' >> \/etc\/apt\/sources.list.d\/varnish.list\r\napt-get update\r\napt-get install varnish\r\n<\/pre>\n<p>Un fichier de configuration pour d\u00e9buter :<\/p>\n<pre lang=\"cpp\"># Varnish 4\r\nvcl 4.0;\r\n# Backend par defaut\r\nbackend default {\r\n        .host = \"127.0.0.1\";\r\n        .port = \"81\";\r\n        .connect_timeout = 1s;\r\n        .first_byte_timeout = 30s;\r\n        .probe = {\r\n                .url = \"\/\";  # ou .request = \"GET \/ HTTP\/1.1\" \"Host: blog.jeremm.fr\" \"Connection: close\";\r\n                .timeout  = 15s;\r\n                .interval = 15s;\r\n                .window    = 5;\r\n                .threshold = 2;\r\n        }\r\n}\r\nsub vcl_recv {\r\n        # Defini le backend\r\n        set req.backend_hint = default ;\r\n        # Pipe directement au backend pour les requetes non HTTP\r\n        if (req.method != \"GET\" &&\r\n                req.method != \"HEAD\" &&\r\n                req.method != \"PUT\" &&\r\n                req.method != \"POST\" &&\r\n                req.method != \"TRACE\" &&\r\n                req.method != \"OPTIONS\" &&\r\n                req.method != \"DELETE\") {\r\n                return (pipe);\r\n        }\r\n        # Ne pas cacher pour les requetes HTTP qui ne sont pas des simples demandes GET \r\n        if (req.method != \"GET\" && req.method != \"HEAD\") {\r\n                return (pass);\r\n        }\r\n        # Enleve les cookies sur les medias pour que le hash match tous les clients\r\n        if (req.url ~ \"\\.(jpeg|jpg|png|gif|ico|swf|js|css|gz|rar|txt|bzip|pdf)(\\?.*|)$\" && req.url !~ \"^\/index.php?\") {\r\n                unset req.http.Cookie;\r\n                return (hash);\r\n        }\r\n        # Ne pas cacher pour les parties avec authentification\r\n        if (req.http.Authorization) {\r\n                return (pass);\r\n        }\r\n        return (hash);\r\n}\r\nsub vcl_hash {\r\n        hash_data(req.url);\r\n        if (req.http.host) {\r\n                hash_data(req.http.host);\r\n        } else {\r\n                hash_data(server.ip);\r\n        }\r\n        if (req.http.Cookie) {\r\n                hash_data(req.http.Cookie);\r\n        }\r\n        return(lookup);\r\n}\r\nsub vcl_pass {\r\n        set req.http.X-marker = \"pass\" ;\r\n}\r\nsub vcl_backend_response {\r\n        # Gzip tous les objets\r\n        if ( ! beresp.http.Content-Encoding ~ \"gzip\" ) {\r\n                set beresp.do_gzip = true;\r\n        }\r\n        # Efface le set-cookie sur les medias\r\n        if (bereq.url ~ \"\\.(jpeg|jpg|png|gif|ico|swf|js|css|gz|rar|txt|bzip|pdf)(\\?.*|)$\" && bereq.url !~ \"^\/index.php?\") {\r\n                unset beresp.http.set-cookie;\r\n        }\r\n        # Cache les redirections et ne cache pas les 404\r\n        if (beresp.ttl > 0s ) {\r\n                if (beresp.status >= 300 && beresp.status <= 399) {\r\n                        set beresp.ttl = 10m;\r\n                }\r\n                if (beresp.status >= 399) {\r\n                        set beresp.ttl = 0s;\r\n                }\r\n        }\r\n        # Efface le set-cookie sur les 404 & Cie\r\n        if (beresp.status >= 399) {\r\n                unset beresp.http.set-cookie;\r\n        }\r\n        # Maximum 24h de cache\r\n        if (beresp.ttl > 86400s) {\r\n                set beresp.ttl = 86400s;\r\n        }\r\n        # Marqueur pour l'entete HTTP de la reponse\r\n        if (bereq.http.X-marker == \"pass\" ) {\r\n                unset bereq.http.X-marker;\r\n                set beresp.http.X-marker = \"pass\";\r\n                set beresp.ttl = 0s ;\r\n        }\r\n        # Ne pas cacher si il y a encore un set-cookie\r\n        if (beresp.ttl > 0s && beresp.http.set-cookie) {\r\n                set beresp.ttl = 0s ;\r\n        }\r\n}\r\nsub vcl_deliver {\r\n        # Ajout et nettoyage de l'entete HTTP de la reponse\r\n        if (obj.hits > 0){\r\n                set resp.http.X-Varnish-Cache = \"HIT\";\r\n        } else {\r\n                set resp.http.X-Varnish-Cache = \"MISS\";\r\n        }\r\n        if (resp.http.X-marker == \"pass\" ) {\r\n                unset resp.http.X-marker;\r\n                set resp.http.X-Varnish-Cache = \"PASS\";\r\n        }\r\n        unset resp.http.Via;\r\n        unset resp.http.X-Varnish;\r\n        unset resp.http.Server;\r\n        unset resp.http.X-Powered-By;\r\n}\r\nsub vcl_synth {\r\n        if (resp.status >= 500 && req.restarts < 4) {\r\n                return (restart);\r\n        }\r\n}<\/pre>\n<p>T\u00e9l\u00e9chargeable ici : <a href=\"http:\/\/blog.jeremm.fr\/default.4.0.vcl\" title=\"http:\/\/blog.jeremm.fr\/default.4.0.vcl\" target=\"_blank\">http:\/\/blog.jeremm.fr\/default.4.0.vcl<\/a><\/p>\n<p><strong>Maj<\/strong> 25\/06\/2014 : Ajout de commentaires dans la conf<br \/>\n<strong>Maj<\/strong> 22\/02\/2014 : Retrait des r\u00e8gles X-Forwarded-For natif en version 4<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nouvelle version majeur de varnish : https:\/\/www.varnish-cache.org\/content\/varnish-cache-400 Pour l&rsquo;installer : curl http:\/\/repo.varnish-cache.org\/debian\/GPG-key.txt | apt-key add &#8211; echo &lsquo;deb http:\/\/repo.varnish-cache.org\/debian\/ wheezy varnish-4.0&rsquo; >> \/etc\/apt\/sources.list.d\/varnish.list apt-get update apt-get install varnish Un fichier de configuration pour d\u00e9buter : # Varnish 4 vcl 4.0; # Backend par defaut backend default { .host = \u00ab\u00a0127.0.0.1\u00a0\u00bb; .port = \u00ab\u00a081\u00a0\u00bb; .connect_timeout = <a href='https:\/\/blog.jeremm.fr\/?p=788' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[35,9,11,81],"_links":{"self":[{"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=\/wp\/v2\/posts\/788"}],"collection":[{"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=788"}],"version-history":[{"count":11,"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=\/wp\/v2\/posts\/788\/revisions"}],"predecessor-version":[{"id":970,"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=\/wp\/v2\/posts\/788\/revisions\/970"}],"wp:attachment":[{"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jeremm.fr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}