Varnish 和 nginx (多站点 VCL 配置)

Varnish 和 nginx (多站点 VCL 配置)

我有一台 VPS 服务于 2 个 Wordpress 安装。使用 Varnish > Nginx > PHP-FPM 目前我在 nginx 的 conf.d 文件夹中有以下内容:

域名1.com.conf 域名2.com.conf

一个域的配置示例如下:

server {
    server_name domain1.com www.domain1.com *.domain1.com;
    listen 127.0.0.1:81;
    expires max;
    root /home/domain1.com;

    index index.php;

Varnish 的默认 VCL 文件:

backend default {
  .host = "127.0.0.1";
  .port = "81";
  .connect_timeout = 600s;
    .first_byte_timeout = 600s;
    .between_bytes_timeout = 600s;
}

所有域都有相同的监听值,127.0.0.1:81。

我如何让 Varnish 真正提供正确域的缓存版本?

答案1

要按域名分割缓存,请使用以下命令更改 VCL 配置:将其添加到 vcl_hash 子例程中:

适用于 Varnish 2.1.x

if (req.http.host) {
 set req.hash += req.http.host;
}
else {
 set req.hash += server.ip;
}

适用于 Varnish 3.x

if (req.http.host) {
 hash_data(req.http.host);
}
else {
 hash_data(server.ip);
}

相关内容