apache - 如何在具有多个 IP 和域的专用服务器中设置 Varnish?

标签 apache caching centos cpanel varnish

我有一个包含许多域的专用服务器。有些域有自己的专用 IP,有些 IP 由域共享。

我想为所有域和 IP 设置 Varnish 。

服务器:CentOS 7.2 和 cPanel 11.58

你知道任何cpanel插件吗?或简单的代码或有效的方法,可以自动/轻松地为所有域/IP 设置 Varnish 。

安装 Varnish 后,我将apache端口更改为“8080”。我在 varnish.params 中将端口更改为“80”,在 default.vcl 中更改为“8080”。现在 varnish 适用于服务器的主 IP 和域。

我尝试通过以下方法修改 default.vcl,但之后当我尝试加载时 Varnish 会出错。我很困惑并尝试了很多方法来解决它,但不幸的是没有任何效果。

backend example1 {
    .host = "5.135.166.39";
    .port = "8080";
}

backend example2 {
    .host = "46.105.40.241";
    .port = "8080";
}
sub vcl_recv {

    if (server.ip == "5.135.166.39") {
        set req.backend = example1; 
    } elseif (server.ip == "46.105.40.241") {
        set req.backend = example2;
    } else {
        set req.backend = default;
    }
}

最佳答案

您需要通过域名本身而不是其 ip 来定义您的条件。所以假设你有 2 个域:
www.foo.comA record 5.135.166.39www.bar.comA record 46.105.40.241
里面 vcl_recv您需要执行以下操作:

if (req.http.host ~ "foo.com") {
    set req.backend = example1;
}

if (req.http.host ~ "bar.com") {
    set req.backend = example2;
}

使用 ~匹配任何包含 foo.bar 的 url或者您可以使用 == "www.foo.com"匹配 www.foo.com只是,bar.com 也是如此

关于apache - 如何在具有多个 IP 和域的专用服务器中设置 Varnish?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339685/

相关文章:

php - 如何从网络创建不可访问的 xampp 服务器?

caching - 我应该使用 Redis 来缓存查询的响应吗?

Spring 缓存 key 生成器

php - 如何在没有 suhosin 的情况下使用 PHP7 服务器保护 CentOS?

google-cloud-platform - 如何在 GCP/GCE 中将 CentOS 8 选项作为 VM 选项提供?

apache - 每个 Tomcat 的 Axis2 版本

linux - www 文件夹的权限被拒绝

apache - 403 禁止。您无权访问/在此服务器上。本地主机。瓦普2.5

java - Spring Cache @Cacheable - 从同一个bean的另一个方法调用时不起作用

PostgreSQL for Debian vs Redhat (Centos)