【问题标题】:Varnish add more slash in URLVarnish 在 URL 中添加更多的斜线
【发布时间】:2018-09-17 04:38:02
【问题描述】:

我的清漆缓存是加速器模式,它会导致在 URL 后添加更多斜杠。 我与 gtmetrix 核对:

Avoid landing page redirects for the following chain of redirected URLs.
https://www.example2.com/
https://www.example2.com//
https://www.example2.com/

并使用谷歌页面速度测试: 减少服务器响应时间 在我们的测试中,您的服务器在 1.6 秒内响应。有许多因素会减慢您的服务器响应时间。

这是我的配置:

vcl 4.0;

backend default {
.host = "localhost";
.port = "8080";
}

acl purger {
"localhost";
"XXX.XXX.XXX.XXX";
}

sub vcl_recv {

 if (client.ip != "127.0.0.1" && req.http.host ~ "XXX.com") {
 set req.http.x-redir = "https://www.example.com/" + req.url;
 return(synth(850, ""));
 }

 if (client.ip != "127.0.0.1" && req.http.host ~ "YYY.com") {
 set req.http.x-redir = "https://www.example2.com/" + req.url;
 return(synth(850, ""));
 }
 if (req.method == "PURGE") {
    if (!client.ip ~ purger) {
    return(synth(405, "This IP is not allowed to send PURGE requests."));
  }
 return (purge);
 }

 if (req.restarts == 0) {
 if (req.http.X-Forwarded-For) {
 set req.http.X-Forwarded-For = client.ip;
 }
 }

 if (req.http.Authorization || req.method == "POST") {
 return (pass);
 }

 if (req.url ~ "/feed") {
 return (pass);
 }

 set req.http.cookie = regsuball(req.http.cookie, "wp-settings-\d+=[^;]+(; )?", "");
 set req.http.cookie = regsuball(req.http.cookie, "wp-settings-time-\d+=[^;]+(; )?", "");

 if (req.http.cookie == "") {
 unset req.http.cookie;
 }
}

sub vcl_synth {
 if (resp.status == 850) {
 set resp.http.Location = req.http.x-redir;
 set resp.status = 302;
 return (deliver);
 }
}

sub vcl_purge {
set req.method = "GET";
 set req.http.X-Purger = "Purged";
 return (restart);
 }

sub vcl_backend_response {
 set beresp.ttl = 24h;
 set beresp.grace = 1h;

}

sub vcl_deliver {
 if (req.http.X-Purger) {
 set resp.http.X-Purger = req.http.X-Purger;
}
}

有人知道清漆这样做的原因吗?

【问题讨论】:

    标签: varnish


    【解决方案1】:

    req.url 总是在开头包含/

    所以正确的是:

    set req.http.x-redir = "https://www.example2.com" + req.url;

    您的问题与 example1/example2 不对应,因为它包含 XXX 和 YYY

    如果您可以发布一个编辑较少的 VCL - 我可以为您提供更多帮助 在重定向之前,您可能需要req.url 上的!= "/"。因为这会导致//

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多