2016-07-21 7 views
0

User-Agent == GlobalSignの場合やリクエストURLが/ globalsignの場合、特別なバックエンドにトラフィックをリダイレクトする単純なルールがあります。まれに、ワニスが特別なバックエンドからのコンテンツを間違って返すことに気づきました。それはランダムに起こり、繰り返されないようです。ワニスがユーザーエージェントのルールから不正なバックエンドの内容を返す

if (req.http.User-Agent ~ "(?i)GlobalSign" || req.url ~ "^/globalsign") { 
    set req.url = "/"; 
    set req.backend = dgs1; 
    return(pipe); 
} 

バックエンドルール

backend b1 { 
    //Backend 1 
    .host = "10.8.8.16"; 
    .port = "80"; 
    .probe = { 
     .url = "/service_up"; 
     .timeout = 1s; 
     .interval = 5s; 
     .window = 10; 
     .threshold = 8; 
    } 
} 


backend gs1 { 
     // Set host: Globalsign 
     .host = "10.8.8.15"; 
     .port = "80"; 
     .probe = { 
      .url = "/service_up"; 
      .timeout = 5s; 
      .interval = 5s; 
      .window = 10; 
      .threshold = 8; 
     } 
    } 

director dgs1 random { 

    { 
     .backend = gs1; 
     .weight = 1; 
    } 

} 

director d01 random { 
     { 
     .backend = b1; 
     .weight = 1; 
    } 
} 

フルVCL

include "backends.vcl"; 
include "bans.vcl"; 
include "acl.vcl"; 

sub vcl_recv { 

    // Use the director we set up above to answer the request if it's not cached. 
    set req.backend = d01; 
    if(req.url ~ "^/service_up") { 
     return(lookup); 
    } 

    if(client.ip ~ evil_networks){ 
     error 403 "Forbidden"; 
    } 

    if (req.http.User-Agent ~ "(?i)GlobalSign" || req.url ~ "^/globalsign") { 
     set req.url = "/"; 
     set req.backend = dgs1; 
     return(pipe); 
    } 

    return(pass) 
} 

sub vcl_fetch { 
    set beresp.grace = 24h; 

    if (beresp.status >= 400) { 
     return (hit_for_pass); 
    } 

    // New Set Longer Cache 
    if (req.http.user-agent ~ "(Googlebot|msnbot|Yandex|Slurp|Bot|Crawl|bot|Baid|Mediapartners-Google)") { 
     unset beresp.http.set-cookie; 
     set beresp.ttl = 5d; 
     return (deliver); 
    } 
    if (req.request == "GET" && req.url ~ "\.(css|xml|txt)$") { 
     set beresp.ttl = 5d; 
     unset beresp.http.set-cookie; 
     return (deliver); 
    } 
    // multimedia 
    if (req.request == "GET" && req.url ~ "\.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|img|tga|woff|eot|ttf|svg|wmf|js|swf|ico)$") { 
     unset beresp.http.set-cookie; 
     set beresp.ttl = 5d; 
     return (deliver); 
    } 
    set beresp.ttl = 5d; 
    return (deliver); 
} 

include "errors.vcl"; 

sub vcl_deliver { 

    return(deliver); 
} 
+0

この場合、「間違って」何を意味するのか少し説明できますか? – ldg

+0

GlobalSignまたはreq.url〜 "^/globalsign" shoudlを含むUser-Agentのトラフィックだけがディレクタdgs1を使用します。ただし、その基準を満たさないユーザーは、dgs1からのコンテンツのみを受信して​​います – jozwikjp

答えて

0

Iはリターン(パイプ)を推測します。は疑わしいものです。

あなたはキープアライブHTTPクライアントをたGlobalSignユーザエージェントとか/グローバルサイン URLに一つだけ要求を行っている場合は、それ以降のすべての要求は、彼らが基準を満たさない場合でも、dgs1にパイプされます。

可能であれば、配管を避けるようにしてください。問題を追跡するのが難しいのがよくあります。セキュリティホールも

関連する問題