我正在尝试为一个小节点js服务器实现Varnish
(index.js)
const port = 80;
require("http").createServer((req, res) => {
res.write(new Date().toISOString());
res.end();
}).listen(port, () => {
console.log(`http://127.0.0.1:${port}/`);
})
(default.vcl)
vcl 4.1;
backend default {
.host = "127.0.0.1";
.port = "80";
}
(CMD)
//now I run docker with following commands
docker run --name varnish -p 8080:80 -e VARNISH_SIZE=2G varnish:stable
docker cp default.vcl varnish:/etc/varnish
(Followed By restart container)
但我看到以下错误:
错误503后端获取失败后端读取失败
冥想大师:XID: 31日
清漆缓存服务器
您的清漆配置有问题。您已设置:
backend default {
.host = "127.0.0.1";
.port = "80";
}
但是127.0.0.1
(或localhost
)意味着"这个容器",并且您的后端不是在与Varnish相同的容器内运行。如果你的node.js服务器运行在你的主机上,你可能想做这样的事情:
vcl 4.1;
backend default {
.host = "host.docker.internal";
.port = "80";
}
然后像这样开始容器:
docker run --name varnish -p 8080:80 --add-host=host.docker.internal:host-gateway -e VARNISH_SIZE=2G varnish:stable
将主机名host.docker.internal
映射为"Docker正在运行的主机"。
如果你的node.js在另一个容器中运行,解决方案将看起来有点不同。