【问题标题】:How to setup Varnish to work with Apache and Tomcat如何设置 Varnish 以使用 Apache 和 Tomcat
【发布时间】:2016-07-05 20:31:25
【问题描述】:

我有一个 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”,但如何避免 URL 上的“:8181”?

使用 Apache 一切正常。

TIA。

【问题讨论】:

    标签: apache tomcat varnish


    【解决方案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 的。VCL 语法对于 Varnish 3 会略有不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 2012-06-30
      • 2012-05-25
      相关资源
      最近更新 更多