Jump to content
php.lv forumi

Varnish konfigurācija


LoyC

Recommended Posts

Vajadzīga neliela palīdzība ar varnish konfigurāciju. Problēma tāda, ka ieejot pirmo reizi lapā varnish uztaisa miss, kas ir logiski. Refresh un ir hit. Paņemot citu browseri, atverot to pašu lapu atkal pirmais ir miss un pēc tam hit. Sanāk, ka katram lietotajam ir savs keš, bet itkā konfigurācijā nekas tāds nav minēts. Ko varētu pamainīt, lai piespiestu varnish visiem anonīmajiem lietotājiem ņemt no viena keša nevis katram sava? Tā pati problēma ir arī ar vienkāršu

 

sub vcl_recv {
  unset req.http.Cookie;
  return (lookup);
}

default.vcl https://gist.github.com/nigareps/b9348e7ec26a6fb5e1d6

Edited by LoyC
Link to comment
Share on other sites

Tas pats.

Varbūt ir iespējams varnish pateikt, lai ignorē pilnīgi visu informāciju, ko sūta gan drupal gan browseris? 

Un vēl jautājums, nekur nevaru atrast, kā apskatīties iekešoto url un hash sarakstu? Varētu salīdzināt vai hashi vienādiem url ir vienādi.

Link to comment
Share on other sites

Pilnīgi visu ignorēt nevar, bet vari pārrakstīt subrutīnas beigās veinmēr return'ojot kaut ko.
 

vcl_recv {
  unset req.http.Cookie;

  return (lookup);
}

vcl_hash {
  hash_data(req.http.Host);
  hash_data(req.url);
 }

vcl_fetch {
  unset beresp.http.Cache-Control;
  unset beresp.http.Set-Cookie;

  beresp.ttl = 1h;

  return (deliver);
}

Pamēgini tik šo iekš vcl un skaties kas noteikt. Šim vajadzētu cache'ot visu...

Link to comment
Share on other sites

Vēl viena jocīga problēma. Pēc ielogošanās iesetojās kukijs AUTH un notiek redirekts uz iekešotu lapu. Bet nezināmu iemeslu dēļ iekešotās lapas tiek padodas izlaižot vcl_recv un es nevaru pārbaudīt kūkiju un uztaisīt return pass; Cik sapratu tad pilnīgi visi requesti iet cauri vcl_recv, bet laikam tomēr nē. Kur tad man vajadzētu pārbaudīt kukiju un taisīt pass?

Link to comment
Share on other sites

Visi pieprasiijumi iet caur vcl_recv.

 

Ja ieksh vcl_recv tu dari return(pass) un iesh vcl_fetch tu dari return(deliver) tad tev vajag speciaali handle'ot return(pass) no vcl_recv. Aptuveni taa:

 

 

vcl_recv {
  if(req.http.Cookie ~ "AUTH") {
    set req.http.X-Hit-For-Pass = "true";
 
    return (pass);
  }
}
 
vcl_fetch {
  if(req.http.X-Hit-For-Pass == "true") {
    unset req.http.X-Hit-For-Pass;
 
    return (hit_for_pass);
  }
 
  return (deliver);
}
Link to comment
Share on other sites

Ieeju lapā, ierakstu configā iekš vcl_recv kā pirmo rindu panic(""); salgabāju un restart varnish un man tik un tā to lapu padod no keša. Ieejot citā lapā, kura nav nokešota ir errors. Pēc tāda testa taču sanāk, ka vcl_recv nenostrādā vispār.

Link to comment
Share on other sites

Nezinu kas tev tur notiek. vcl_recv vienmeer tiek izsaukts - pat ja lapa ir cache'aa. Pats tikko pameegjinaaju un pat ja lapa ir cache'aa tad panic tiek izsaukts.

 

Varbuut tev paarluuks ir nokeshojis to lapu? Ja jau tu restartee Varnish, tad cache pazuud shaa vai taa.

 

P.S.

 

restarteet Varnish'u nav vajadziibas ja gribi nomainiit .vcl. Ieej varnishadm un izmanto vcl.load un vcl.use

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...