如何设置 Varnish 以与 Apache 和 Tomcat 一起工作
How to setup Varnish to work with Apache and Tomcat
我有一个 Ubuntu 12.0 服务器 运行 Varnish 4 在端口 80 和 Apache 2.4 在 8080。
我在端口 8181 上安装了 Tomcat 7 运行,它只运行一个 Liferay 站点。
我也想配置 Varnish 以与 Tomcat 一起使用。
我该如何设置?
我当前的设置是这样的:
/etc/default/varnish
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
/etc/varnish/default.vcl
backend default {
.host = "123.456.789.000";
.port = "8080";
.connect_timeout = 580s;
.first_byte_timeout = 580s;
.between_bytes_timeout = 580s;
}
如果我将浏览器指向 123.456.789.000:8181,Tomcat 网站就可以正常工作。我将使用我的 DNS 设置注册器以响应 "www.mytomcatsite.com",但如何避免 URL 上的“:8181”?
使用 Apache 一切正常。
TIA。
来自清漆文档:
我们添加了一个新的后端。:
backend java {
.host = "127.0.0.1";
.port = "8000";
}
现在我们需要告诉 Varnish 将差异发送到哪里 URL。让我们看看 vcl_recv.:
sub vcl_recv {
if (req.url ~ "^/java/") {
set req.backend_hint = java;
} else {
set req.backend_hint = default;
}
}
如果您希望在虚拟主机的基础上完成此路由,您只需要检查 req.http.host:
sub vcl_recv {
if (req.http.host ~ "foo.com") {
set req.backend_hint = foo;
} elsif (req.http.host ~ "bar.com") {
set req.backend_hint = bar;
}
}
参见:
- https://www.varnish-cache.org/docs/trunk/users-guide/vcl-backends.html#multiple-backends
- https://www.varnish-cache.org/docs/trunk/users-guide/vcl-backends.html#backends-and-virtual-hosts-in-varnish
注意:这是针对 Varnish 4 的。VCL 语法对于 Varnish 3 会略有不同。
我有一个 Ubuntu 12.0 服务器 运行 Varnish 4 在端口 80 和 Apache 2.4 在 8080。 我在端口 8181 上安装了 Tomcat 7 运行,它只运行一个 Liferay 站点。 我也想配置 Varnish 以与 Tomcat 一起使用。 我该如何设置? 我当前的设置是这样的:
/etc/default/varnish
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"
/etc/varnish/default.vcl
backend default {
.host = "123.456.789.000";
.port = "8080";
.connect_timeout = 580s;
.first_byte_timeout = 580s;
.between_bytes_timeout = 580s;
}
如果我将浏览器指向 123.456.789.000:8181,Tomcat 网站就可以正常工作。我将使用我的 DNS 设置注册器以响应 "www.mytomcatsite.com",但如何避免 URL 上的“:8181”?
使用 Apache 一切正常。
TIA。
来自清漆文档:
我们添加了一个新的后端。:
backend java {
.host = "127.0.0.1";
.port = "8000";
}
现在我们需要告诉 Varnish 将差异发送到哪里 URL。让我们看看 vcl_recv.:
sub vcl_recv {
if (req.url ~ "^/java/") {
set req.backend_hint = java;
} else {
set req.backend_hint = default;
}
}
如果您希望在虚拟主机的基础上完成此路由,您只需要检查 req.http.host:
sub vcl_recv {
if (req.http.host ~ "foo.com") {
set req.backend_hint = foo;
} elsif (req.http.host ~ "bar.com") {
set req.backend_hint = bar;
}
}
参见:
- https://www.varnish-cache.org/docs/trunk/users-guide/vcl-backends.html#multiple-backends
- https://www.varnish-cache.org/docs/trunk/users-guide/vcl-backends.html#backends-and-virtual-hosts-in-varnish
注意:这是针对 Varnish 4 的。VCL 语法对于 Varnish 3 会略有不同。