如何设置Varnish以使用Apache和Tomcat

时间:2016-07-05 20:31:26

标签: apache tomcat varnish

我有一个Ubuntu 12.0服务器在端口80上运行Varnish 4,在8080中运行Apache 2.4。 我安装了在端口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",但我怎样才能避免":8181"在URL?

使用Apache一切正常。

TIA。

1 个答案:

答案 0 :(得分:1)

来自清漆文档:

我们添加了一个新的后端。:

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;
    }
}

请参阅:

注意:这适用于Varnish 4.对于Varnish 3,VCL语法略有不同。