varnish 无法占用 ec2 机器上的 80 端口

问题描述 投票:0回答:2

我正在尝试在 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端口上没有进程运行

varnish varnish-vcl
2个回答
0
投票

要访问80端口需要root权限,请尝试从root用户运行docker命令或将您的用户添加到docker组。


0
投票

不是答案,而是附加信息。 我对清漆也有同样的问题。我尝试了不同的 docker 镜像来监听端口 80,它可以工作:

docker run --rm -it -p 80:80 strm/helloworld-http

但是清漆给出了与作者发布的相同的错误。 相同的清漆配置/运行命令在不同的服务器上工作得很好。

所以最重要的是,它并不像“需要 root 才能获取端口 80”那么简单。因为其他图像使用端口 80 就可以了。同时,相同的清漆配置在不同的服务器上运行良好。所以它一定是在特定的 docker 配置和清漆图像的内部的交叉上。

© www.soinside.com 2019 - 2024. All rights reserved.