gpt4 book ai didi

未处理ESI的 Varnish 包括

转载 作者:行者123 更新时间:2023-12-03 17:45:47 31 4
gpt4 key购买 nike

我正在尝试设置Varnish来处理本地环境中的ESI包含。

我在虚拟机中运行 Varnish ,内容在主机上运行。

我有两个文件“index.html”和“test.html”。它们都存储在apache服务器的docroot中名为“esi”的文件夹中。

index.html

<h1>It Works!</h1>
<esi:include src="test.html" />

test.html
<p>ESI HAS BEEN INCLUDED</p>

Varnish在端口8000上的虚拟机上运行。因此,我在这里访问它: http://192.168.56.101:8000/esi/

在虚拟机上的/etc/varnish/default.vcl中,我在文件底部添加了followin配置:
sub vcl_fetch {
set beresp.do_esi = true; /* Do ESI processing */
set beresp.ttl = 24 h; /* Sets the TTL on the HTML above */
}

以其应在所有请求上处理ESI的想法为准(不要在意它是否不好,只是尝试使此功能起作用:))

加载 http://192.168.56.101:8000/esi/的结果是:
<h1>It Works!</h1>
<esi:include src="test.html" />

IE。 ESI显示在标记中,但尚未处理。

我已经检查了Varnish日志,但是其中没有错误,也没有与ESI相关的信息。

有人可以在这里看到我做错了吗?让我知道是否需要更多信息..谢谢

最佳答案

如果您的 esi 包含 src 是“test.html”,那么 varnish 会将该请求发送到您的默认后端,即 127.0.0.1。我相信您需要为远程服务器配置第二个后端。像这样的东西:

backend default {
.host = "127.0.0.1";
.port = "8000";
}

backend hostmachine {
.host = "50.18.104.129"; # Enter your IP address here
.port = "80";
}

然后在您的子 vcl_recv 中,您需要将 URL 中包含/esi/的流量重定向到远程服务器。
sub vcl_recv {
if (req.url ~ "^/esi/") {
set req.backend = hostmachine;
set req.http.host = "www.correctdomainname.com";
} else {
set req.backend = default;
}
}

我现在正在做同样的事情,所以试一试,让我知道它是否适合你。

关于未处理ESI的 Varnish 包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092146/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com