我正在尝试在 ec2 实例的 docker 容器中运行 varnish。 我尝试在本地做同样的事情,效果很好。但它不断给出错误: 错误:无法获取套接字:80:权限被拒绝
我的 vcl 看起来像:
vcl 4.0;
backend default {
.host = "x.y.z.y";
.port = "8090";
}
sub vcl_recv {
if (req.method == "BAN") {
ban("obj.http.x-host == " + req.http.host + " && obj.http.x-url ~ " + req.url);
return(synth(200, "Banned added"));
}
}
sub vcl_backend_response {
# Store URL and HOST in the cached response.
set beresp.http.x-url = bereq.url;
set beresp.http.x-host = bereq.http.host;
}
sub vcl_deliver {
# Prevent the client from seeing these additional headers.
unset resp.http.x-url;
unset resp.http.x-host;
}
sub vcl_deliver {
# Prevent the client from seeing these additional headers.
unset resp.http.x-url;
unset resp.http.x-host;
}
并且80端口上没有进程运行
要访问80端口需要root权限,请尝试从root用户运行docker命令或将您的用户添加到docker组。
不是答案,而是附加信息。 我对清漆也有同样的问题。我尝试了不同的 docker 镜像来监听端口 80,它可以工作:
docker run --rm -it -p 80:80 strm/helloworld-http
但是清漆给出了与作者发布的相同的错误。 相同的清漆配置/运行命令在不同的服务器上工作得很好。
所以最重要的是,它并不像“需要 root 才能获取端口 80”那么简单。因为其他图像使用端口 80 就可以了。同时,相同的清漆配置在不同的服务器上运行良好。所以它一定是在特定的 docker 配置和清漆图像的内部的交叉上。