Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 针对每个用户的新docker容器_Apache_Docker - Fatal编程技术网

Apache 针对每个用户的新docker容器

Apache 针对每个用户的新docker容器,apache,docker,Apache,Docker,我正在构建一个“黑客自我”挑战。用户可以从那里侵入网站并获得根访问权限 我在docker容器中做了这个,以防止用户伤害主机或其他游戏玩家(容器) 我不能为每个用户将其重定向到不同的端口,因为用户可以对服务器进行端口扫描并找到不同的容器 server { listen ...; ... location /a1b2c3 { proxy_pass http://a1b2c3:8080; } location /a2b1c4 { proxy_pass http://a2b

我正在构建一个“黑客自我”挑战。用户可以从那里侵入网站并获得根访问权限

我在docker容器中做了这个,以防止用户伤害主机或其他游戏玩家(容器)

我不能为每个用户将其重定向到不同的端口,因为用户可以对服务器进行端口扫描并找到不同的容器

server {
listen       ...;
...
location /a1b2c3 {
    proxy_pass http://a1b2c3:8080;
}

location /a2b1c4 {
    proxy_pass http://a2b1c4:8080;
}

...
}
我想要的是 WARE“A1B2C3”是其自身容器的唯一标识符


有人能告诉我怎么做吗?

使用nginx,您可以执行以下操作-您可以重写给定路径的请求,如下所示:

此处的名称是现有的运行容器

server {
listen       ...;
...
location /a1b2c3 {
    proxy_pass http://a1b2c3:8080;
}

location /a2b1c4 {
    proxy_pass http://a2b1c4:8080;
}

...
}

我将与Jwilder/Nginx一起完成这项任务。就从另一个开始吧 具有“随机”子域的容器

启动Nginx/Jwilder

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
启动您的容器

   for i in {1..5}
    do
      docker run -e VIRTUAL_HOST=foo-$i.bar.com mycontainer
    done
Jwilder/Nginx将在每个启动的容器上更新,并将注册
新VHOST。

您需要通过http访问它吗?如果是这样,您需要在您这边运行一些代理,将子域重定向到适当的容器中,但这意味着hackme是基于http端口的?是的,这部分是基于http端口的。对于使用nginx和nginxproxy的示例,您可以将不同子域的端口80重定向到不同的容器组。例如,staging.example.com到staging main,test.example.com到test main。可能你想要不同的地址也是可能的。使用nginx本身,你可以将流量从不同的URL重定向到某些给定的容器。但是,对于所有唯一的URL,它最终指向同一个容器,不是吗?不,每个容器都有其唯一的子域,nginx指向每个容器。