Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import std;
- backend apache {
- .host = "localhost";
- .port = "81";
- }
- acl purge {
- "localhost";
- "10.2.35.3";
- "10.2.35.5";
- }
- sub vcl_recv {
- set req.grace = 5m;
- if (req.restarts == 0) {
- if (req.http.x-forwarded-for) {
- std.collect(req.http.x-forwarded-for);
- set req.http.X-Forwarded-For = req.http.X-Forwarded-For;
- } else {
- set req.http.X-Forwarded-For = client.ip;
- }
- }
- if(req.url ~ "^/component\/jcomments\/captcha/\d+$") {
- set req.backend = apache;
- return (pipe);
- }
- if(req.url ~ "^/administrator") {
- set req.backend = apache;
- return (pipe);
- }
- if(req.http.x-logged-in == "False" && req.request != "POST"){
- unset req.http.cookie;
- }
- if (req.request == "POST") {
- set req.backend = apache;
- return(pipe);
- }
- if (req.http.Authenticate || req.http.Authorization) {
- set req.backend = apache;
- return(pipe);
- }
- if (req.http.referer ~ "(?i)(com_user|login)") {
- set req.backend = apache;
- return(pipe);
- }
- if (req.request == "PURGE") {
- if (!client.ip ~ purge) {
- error 405 "Not allowed.";
- }
- return (lookup);
- }
- if (req.request == "BAN") {
- ban("obj.http.x-url ~ " + req.http.x-ban-url +
- " && obj.http.x-host ~ " + req.http.x-ban-host);
- error 200 "Banned";
- }
- unset req.http.cookie;
- if (req.url ~ ".(jpg|png|gif|gz|tgz|bz2|lzma|tbz)(\?.*|)$") {
- remove req.http.Accept-Encoding;
- } elsif (req.http.Accept-Encoding ~ "gzip") {
- set req.http.Accept-Encoding = "gzip";
- } elsif (req.http.Accept-Encoding ~ "deflate") {
- set req.http.Accept-Encoding = "deflate";
- } else {
- remove req.http.Accept-Encoding;
- }
- if (req.url ~ "wp-(login|admin)") {
- return (pass);
- }
- if (req.request != "GET" && req.request != "HEAD") {
- return (pass);
- }
- if (req.url ~ ".(jpeg|jpg|png|gif|ico|swf|js|css|txt|gz|zip|rar|bz2|tgz|tbz|html|htm|pdf|pls|torrent)(\?.*|)$") {
- unset req.http.Authenticate;
- unset req.http.POSTDATA;
- set req.request = "GET";
- set req.url = regsub(req.url, "\?.*$", "");
- return (lookup);
- }
- }
- sub vcl_pipe {
- set bereq.http.connection = "close";
- if (req.http.X-Forwarded-For) {
- set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;
- } else {
- set bereq.http.X-Forwarded-For = regsub(client.ip, ":.*", "");
- }
- }
- sub vcl_pass {
- set bereq.http.connection = "close";
- if (req.http.X-Forwarded-For) {
- set bereq.http.X-Forwarded-For = req.http.X-Forwarded-For;
- } else {
- set bereq.http.X-Forwarded-For = regsub(client.ip, ":.*", "");
- }
- }
- sub vcl_hit {
- if (req.request == "PURGE") {
- purge;
- error 200 "Purged.";
- }
- }
- sub vcl_miss {
- if (req.request == "PURGE") {
- purge;
- error 404 "Not in cache.";
- }
- }
- sub vcl_fetch {
- set beresp.ttl = 5m;
- set req.grace = 10m;
- set beresp.http.x-url = req.url;
- set beresp.http.x-host = req.http.host;
- if (!beresp.http.set-cookie ~ "modaldone"){
- unset beresp.http.set-Cookie;
- }
- if (!req.url ~ "(?i)(login|com_user|user|logout)") {
- unset beresp.http.Set-Cookie;
- }
- if (req.http.referer ~ "(?i)(com_user|login|logout)") {
- set req.backend = apache;
- return(hit_for_pass);
- }
- if (beresp.http.x-logged-in ~ "False"){
- set req.backend = apache;
- return(deliver);
- }
- if (beresp.http.x-logged-in ~ "True"){
- set req.backend = apache;
- return(hit_for_pass);
- }
- if (req.http.Authenticate || req.http.Authorization) {
- set req.backend = apache;
- return(hit_for_pass);
- }
- if (req.url ~ ".(jpeg|jpg|png|gif|ico|swf|js|css|txt|gz|zip|rar|bz2|tgz|tbz|html|htm|pdf|pls|torrent)$") {
- set beresp.ttl = 24h;
- }
- }
- sub vcl_deliver {
- unset resp.http.x-url;
- unset resp.http.x-host;
- if (obj.hits > 0) {
- set resp.http.X-Cache = "HIT";
- set resp.http.X-Cache-Hits = obj.hits;
- } else {
- set resp.http.X-Cache = "MISS";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement