2017-04-11 63 views
1

我有以下VCL:Varnish VCL:我如何開啓req.backend_hint?

vcl 4.0; 

import std; 
import directors; 

backend one { 
    .host = "localhost"; 
    .port = "3333"; 
} 

backend two { 
    .host = "localhost"; 
    .port = "3333"; 
} 

sub vcl_init { 
    new random_director = directors.random(); 
    random_director.add_backend(two, 10); 
    random_director.add_backend(one, 8); 
} 

sub vcl_recv { 

    std.log("start vcl_recv"); 

    set req.backend_hint = random_director.backend(); 
    if (req.backend_hint == one) { 
     std.log("one"); 
    } else if (req.backend_hint == two) { 
     std.log("two"); 
    } else { 
     std.log("neither one"); 
    } 

    std.log("end vcl_recv"); 
} 

當我運行它時,輸出總是:

start vl_recv 
neither one 
end vcl_recv 

我如何正確檢查,看看哪個後端已選定?

感謝

+0

會發生什麼,如果你只是'std.log(REQ .backend_hint)'只是在設置之後? – SuperDuperApps

回答

1

vcl_backend_fetch你應該能夠訪問bereq.backend.name

所以把你的代碼,你可能會碰到這樣的:

sub vcl_backend_fetch { 
    if (bereq.backend.name == "one") { 
     std.log("one"); 
    } else if (bereq.backend.name == "two") { 
     std.log("two"); 
    } else { 
     std.log("neither one"); 
    } 
} 
相關問題