varnish直接请求内部ip
Varnish direct request to internal ip
我有这样的哈希配置
sub vcl_init {
new bar = directors.hash();
bar.add_backend(server1, 1.0);
bar.add_backend(server2, 1.0);
}
我想添加一个重写规则,如果在 url 中有一个词,它必须重定向到一个特定的内部服务器
if (req.url ~ "/newsletter" ) {
set req.http.x-redir = "https://" + "10.1.3.4" + req.url;
return (synth (301, req.http.x-redir));
}
但是这条规则不起作用,因为 10.1.3.4 是一个内部 ip 而不是 DNS。可以这样做吗?
如果请求包含时事通讯,您似乎想使用不同的 director 后端(内部服务器)。有可能。
例子
sub vcl_recv {
if (req.url ~ "^/newsletter") {
set req.backend = newsletter;
} else {
set req.backend = default.
}
}
见https://varnish-cache.org/docs/3.0/tutorial/advanced_backend_servers.html
但是你不能做 301,那是针对外部请求,而这里我们说的是内部路由。
我有这样的哈希配置
sub vcl_init {
new bar = directors.hash();
bar.add_backend(server1, 1.0);
bar.add_backend(server2, 1.0);
}
我想添加一个重写规则,如果在 url 中有一个词,它必须重定向到一个特定的内部服务器
if (req.url ~ "/newsletter" ) {
set req.http.x-redir = "https://" + "10.1.3.4" + req.url;
return (synth (301, req.http.x-redir));
}
但是这条规则不起作用,因为 10.1.3.4 是一个内部 ip 而不是 DNS。可以这样做吗?
如果请求包含时事通讯,您似乎想使用不同的 director 后端(内部服务器)。有可能。
例子
sub vcl_recv {
if (req.url ~ "^/newsletter") {
set req.backend = newsletter;
} else {
set req.backend = default.
}
}
见https://varnish-cache.org/docs/3.0/tutorial/advanced_backend_servers.html
但是你不能做 301,那是针对外部请求,而这里我们说的是内部路由。