Php 防止具有N个子域的Varnish双缓存/仅为Varnish规范化主机
我有一堆子域,看起来像:Php 防止具有N个子域的Varnish双缓存/仅为Varnish规范化主机,php,regex,apache,varnish,varnish-vcl,Php,Regex,Apache,Varnish,Varnish Vcl,我有一堆子域,看起来像: http://u-c2f86nr3pa.example.org/?s=1 http://u-v1cfu8dsta.example.org/?s=1 它们的内容不同,但静态文件CSS/JS/Favicon是相同的。我想为它们规范化主机名,但我不想为PHP脚本规范化主机名,因为它是基于子域工作的 有没有一种方法可以让varnish知道这些域是通用的,静态域应该为它们缓存一次?您可以在varnish配置的vcl\u recv部分有条件地重写主机头。您需要一种方法来识别哪些U
http://u-c2f86nr3pa.example.org/?s=1
http://u-v1cfu8dsta.example.org/?s=1
它们的内容不同,但静态文件CSS/JS/Favicon是相同的。我想为它们规范化主机名,但我不想为PHP脚本规范化主机名,因为它是基于子域工作的
有没有一种方法可以让varnish知道这些域是通用的,静态域应该为它们缓存一次?您可以在varnish配置的vcl\u recv部分有条件地重写主机头。您需要一种方法来识别哪些URL用于静态内容。这是一个例子;具体的正则表达式将取决于网站的结构
sub vcl_recv {
# Normalize Host if URL is one of:
# /css/* /js/* /favicon*
if (req.http.Host ~ "^u-\w+\.example\.org$" &&
req.url ~ "^/(css/|js/|favicon)")
{
set req.http.Host = "u-xxxxxxxxx.example.org";
}
}
您的后端web服务器将看到重写的主机,因此请确保将其规范化为它可以识别的名称。您可以在Varnish配置的vcl\u recv部分有条件地重写主机头。您需要一种方法来识别哪些URL用于静态内容。这是一个例子;具体的正则表达式将取决于网站的结构
sub vcl_recv {
# Normalize Host if URL is one of:
# /css/* /js/* /favicon*
if (req.http.Host ~ "^u-\w+\.example\.org$" &&
req.url ~ "^/(css/|js/|favicon)")
{
set req.http.Host = "u-xxxxxxxxx.example.org";
}
}
您的后端web服务器将看到重写的主机,因此请确保将其规范化为它可以识别的名称。您可以在Varnish配置的vcl\u recv部分有条件地重写主机头。您需要一种方法来识别哪些URL用于静态内容。这是一个例子;具体的正则表达式将取决于网站的结构
sub vcl_recv {
# Normalize Host if URL is one of:
# /css/* /js/* /favicon*
if (req.http.Host ~ "^u-\w+\.example\.org$" &&
req.url ~ "^/(css/|js/|favicon)")
{
set req.http.Host = "u-xxxxxxxxx.example.org";
}
}
您的后端web服务器将看到重写的主机,因此请确保将其规范化为它可以识别的名称。您可以在Varnish配置的vcl\u recv部分有条件地重写主机头。您需要一种方法来识别哪些URL用于静态内容。这是一个例子;具体的正则表达式将取决于网站的结构
sub vcl_recv {
# Normalize Host if URL is one of:
# /css/* /js/* /favicon*
if (req.http.Host ~ "^u-\w+\.example\.org$" &&
req.url ~ "^/(css/|js/|favicon)")
{
set req.http.Host = "u-xxxxxxxxx.example.org";
}
}
您的后端web服务器将看到重写的主机,因此请确保将其规范化为可识别的名称