我可以使用 Varnish 在 1 个域上的不同服务器上提供 2 个不同的服务吗?

我可以使用 Varnish 在 1 个域上的不同服务器上提供 2 个不同的服务吗?

我一直在努力进行这个设置,但我不知道 Varnish 是否支持我想要做的事情:

  1. 我有一台运行 Nginx/Magento 的服务器(ec2),用于电子商务(www.domain/)
  2. 在同一台服务器上,在 Magento 的子目录中,我正在运行 Wordpress(www.domain/blog/)

这两个都以 Varnish 实例为前端,并且一切都很顺利(tm),然而,出于监控和性能的原因,我想将 Wordpress 实例移到它自己的服务器上,然后将 Varnish 指向该服务器以处理博客请求,同时保持它指向现有的 Nginx/Magento 以进行电子商务。

我已经尝试让我的系统管理员使用 Varnish 中的示例 VCL 文件进行设置,但是 Varnish 将 Magento 的请求发送到 Wordpress 时出现问题,然后显示为 404。

我是否只需要制定一个正确配置的 VCL 文件?我还遗漏了什么吗?有人有可以执行此操作的 VCL 文件的工作示例吗?

答案1

只需根据特定 URI 将流量重定向到不同的后端即可

backend wordpress {
  .host = "my.other.server.ip";
  .port = "80";
}

sub vcl_recv {
  if (req.url ~ "^/blog" && req.http.Host ~ "(.*)domain.com") {
    set req.backend = wordpress;
  }

相关内容