Advertisement
Guest User

default.vcl

a guest
Aug 26th, 2013
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.61 KB | None | 0 0
  1. import std;
  2.  
  3. backend apache {
  4. .host = "localhost";
  5. .port = "81";
  6. }
  7.  
  8. acl purge {
  9. "localhost";
  10. "10.2.35.3";
  11. "10.2.35.5";
  12. }
  13.  
  14.  
  15. sub vcl_recv {
  16. set req.grace = 5m;
  17.  
  18. if (req.restarts == 0) {
  19. if (req.http.x-forwarded-for) {
  20. std.collect(req.http.x-forwarded-for);
  21. set req.http.X-Forwarded-For = req.http.X-Forwarded-For;
  22. } else {
  23. set req.http.X-Forwarded-For = client.ip;
  24. }
  25. }
  26.  
  27.  
  28. if(req.url ~ "^/component\/jcomments\/captcha/\d+$") {
  29. set req.backend = apache;
  30. return (pipe);
  31. }
  32.  
  33. if(req.url ~ "^/administrator") {
  34. set req.backend = apache;
  35. return (pipe);
  36. }
  37.  
  38. if(req.http.x-logged-in == "False" && req.request != "POST"){
  39. unset req.http.cookie;
  40. }
  41. if (req.request == "POST") {
  42. set req.backend = apache;
  43. return(pipe);
  44. }
  45. if (req.http.Authenticate || req.http.Authorization) {
  46. set req.backend = apache;
  47. return(pipe);
  48. }
  49.  
  50. if (req.http.referer ~ "(?i)(com_user|login)") {
  51. set req.backend = apache;
  52. return(pipe);
  53. }
  54.  
  55. if (req.request == "PURGE") {
  56. if (!client.ip ~ purge) {
  57. error 405 "Not allowed.";
  58. }
  59. return (lookup);
  60. }
  61.  
  62. if (req.request == "BAN") {
  63. ban("obj.http.x-url ~ " + req.http.x-ban-url +
  64. " && obj.http.x-host ~ " + req.http.x-ban-host);
  65. error 200 "Banned";
  66. }
  67.  
  68.  
  69. unset req.http.cookie;
  70.  
  71. if (req.url ~ ".(jpg|png|gif|gz|tgz|bz2|lzma|tbz)(\?.*|)$") {
  72. remove req.http.Accept-Encoding;
  73. } elsif (req.http.Accept-Encoding ~ "gzip") {
  74. set req.http.Accept-Encoding = "gzip";
  75. } elsif (req.http.Accept-Encoding ~ "deflate") {
  76. set req.http.Accept-Encoding = "deflate";
  77. } else {
  78. remove req.http.Accept-Encoding;
  79. }
  80.  
  81. if (req.url ~ "wp-(login|admin)") {
  82. return (pass);
  83. }
  84.  
  85. if (req.request != "GET" && req.request != "HEAD") {
  86. return (pass);
  87. }
  88.  
  89.  
  90. if (req.url ~ ".(jpeg|jpg|png|gif|ico|swf|js|css|txt|gz|zip|rar|bz2|tgz|tbz|html|htm|pdf|pls|torrent)(\?.*|)$") {
  91. unset req.http.Authenticate;
  92. unset req.http.POSTDATA;
  93. set req.request = "GET";
  94. set req.url = regsub(req.url, "\?.*$", "");
  95. return (lookup);
  96. }
  97.  
  98. }
  99.  
  100. sub vcl_pipe {
  101. set bereq.http.connection = "close";
  102. if (req.http.X-Forwarded-For) {
  103. set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;
  104. } else {
  105. set bereq.http.X-Forwarded-For = regsub(client.ip, ":.*", "");
  106. }
  107. }
  108.  
  109. sub vcl_pass {
  110. set bereq.http.connection = "close";
  111. if (req.http.X-Forwarded-For) {
  112. set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;
  113. } else {
  114. set bereq.http.X-Forwarded-For = regsub(client.ip, ":.*", "");
  115. }
  116. }
  117.  
  118. sub vcl_hit {
  119. if (req.request == "PURGE") {
  120. purge;
  121. error 200 "Purged.";
  122. }
  123. }
  124.  
  125. sub vcl_miss {
  126. if (req.request == "PURGE") {
  127. purge;
  128. error 404 "Not in cache.";
  129. }
  130. }
  131.  
  132. sub vcl_fetch {
  133. set beresp.ttl = 5m;
  134. set req.grace = 10m;
  135. set beresp.http.x-url = req.url;
  136. set beresp.http.x-host = req.http.host;
  137.  
  138. if (!beresp.http.set-cookie ~ "modaldone"){
  139. unset beresp.http.set-Cookie;
  140. }
  141. if (!req.url ~ "(?i)(login|com_user|user|logout)") {
  142. unset beresp.http.Set-Cookie;
  143. }
  144.  
  145. if (req.http.referer ~ "(?i)(com_user|login|logout)") {
  146. set req.backend = apache;
  147. return(hit_for_pass);
  148. }
  149.  
  150. if (beresp.http.x-logged-in ~ "False"){
  151. set req.backend = apache;
  152. return(deliver);
  153. }
  154.  
  155. if (beresp.http.x-logged-in ~ "True"){
  156. set req.backend = apache;
  157. return(hit_for_pass);
  158. }
  159.  
  160. if (req.http.Authenticate || req.http.Authorization) {
  161. set req.backend = apache;
  162. return(hit_for_pass);
  163. }
  164.  
  165. if (req.url ~ ".(jpeg|jpg|png|gif|ico|swf|js|css|txt|gz|zip|rar|bz2|tgz|tbz|html|htm|pdf|pls|torrent)$") {
  166. set beresp.ttl = 24h;
  167. }
  168. }
  169.  
  170. sub vcl_deliver {
  171. unset resp.http.x-url;
  172. unset resp.http.x-host;
  173.  
  174. if (obj.hits > 0) {
  175. set resp.http.X-Cache = "HIT";
  176. set resp.http.X-Cache-Hits = obj.hits;
  177. } else {
  178. set resp.http.X-Cache = "MISS";
  179. }
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement