我有4个容器。使用nginx作为代理,将所有流量重定向到另一个3个容器。这些容器带有apache并存储不同的Web应用程序。每个此容器都包含带有.htaccess的文件夹。该文件仅允许特定IP访问此文件夹。这是当我删除此文件时的所有问题,所有的工作和流量都被重定向,但是当我按如下方式添加此文件时:
{{1}}
它不起作用,我得到“您无权访问...”。如何使其与.htaccess一起使用,或者应该有不同的方法。但是只有特定的文件夹需要保护,其余的则不需要。谢谢
答案 0 :(得分:0)
对于此设置,我将:
.htaccess
文件;和docker run -p
或Docker Compose ports:
选项发布后端服务。Docker的标准网络设置为容器提供私有IP地址,这主要是实现细节。当前主机外部的呼叫者(有时甚至是同一主机上的呼叫者)无法直接访问容器的IP地址;他们必须联系主机并使用容器的已发布TCP端口。如果容器没有发布的端口,则无法访问。
在容器之间,只要它们位于相同的Docker内部网络上(或位于相同的docker-compose.yml
文件中,而没有显式的networks:
),则可以使用容器直接相互访问名称作为主机名。
因此,如果您运行:
docker network create app
docker run --net app -p 80:80 -v ... nginx
docker run --net app service1
docker run --net app service2
docker run --net app service3
然后:
proxy_pass http://service1/
,因为服务位于同一Docker内部网络上http://physical_host.example.com/
,并且主机上的HTTP端口80被路由到nginx容器如果这是您尝试通过Apache的访问机制实现的唯一控件,那么Docker的IP级别保护对您而言就足够了。