Vi upplever för tillfället längre svarstider än vanligt på grund av en ovanligt hög arbetsbelastning.
Vårt team arbetar med full intensitet för att effektivt hantera denna situation och minska väntetiderna.
Vi ber om er förståelse och tålamod under denna period och strävar efter att återgå till normala svarstider så snabbt som möjligt.

Drupal 7 med Varnish

Det finns ganska mycket skrivet om hur man kör Drupal 7 tillsammans med Varnish, men jag saknade en del information i de guider jag hittade.

Första intrycket är att det fungerar väldigt smidigt. Man behöver inte längre installera Pressflow för att bli av med Drupals sessions-kaka för anonyma användare. Det räcker med att lägga till följande i settings.php:

$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array('127.0.0.1');

Lägger man sedan till följande direktiv kan man styra livslängden på sidorna i Varnish under Drupals prestandsinställningar (/admin/config/development/performance):

$conf['page_cache_invoke_hooks'] = FALSE;

Problemet man nu får är att förändringar på sidor inte slår igenom för besökarna förrän innehållet i Varnish blivit för gammalt och hämtas på nytt från Drupal.

För Drupal 6 finns en modul som heter varnish som tar hand om detta.

http://drupal.org/project/varnish

Tyvärr finns inte den för Drupal 7 ännu, men Bryan Shelton har lagt upp en patchad version på github som fungerar:

https://github.com/bshelton229/varnish

Det ser ut som att man ännu så länge är tvungen att tömma hela cachen samtidigt om man kör Drupal 7, men i kombination med grace-funktionen i Varnish bör det normalt sett inte vara några problem.

Trots att jag läst på flera ställen att Varnish ska lägga till headern X-Forwarded-For i requesten till backend gjorde inte min Varnish 2.1.0 på Ubuntu 10.04.2 det. Headern är viktig för att Drupal ska få rätt klient-ip, så att man t.ex. inte får [detta fel](/om-cloudnet/blogg/problem-med-låst-drupalkonto).

Se till att ha med följande rader i Varnish-konfigurationen, överst i sub vcl_recv:

remove req.http.X-Forwarded-For;
set req.http.X-Forwarded-For = client.ip;

Det kan även vara trevligt att ändra loggningen i apache så att man får med klientens IP. Här har jag även passat på att lägga till användarens kakor vilket kan vara användbart vid felsökning av cachningen:

LogFormat "%v:%p %h "%{X-Forwarded-For}i" %l %u %t "%r" %>s %O "%{User-Agent}i" "%{Cookie}i"" vhost_combined

I övrigt är det bara att följa någon av guiderna, t.ex. denna:

http://yoodey.com/install-varnish-drupal-7-ubuntu-maverick-amazon-ec2