apache2:根据url重定向到IP地址(容器的地址)
背景: 我有一个带apache2的Debian。我可以通过以下ip访问此Debian:192.168.12.28 在这个Debian上,我有两个具有以下IP的容器: -172.18.0.2 -172.19.0.2 问题在于: 我希望从外部访问我的容器1,例如: 192.168.12.28/集装箱1 或 myDomain/container1 我尝试的是: 两个领域: test1.domain.fr具有以下test1.domain.fr.conf:apache2:根据url重定向到IP地址(容器的地址),apache,redirect,docker,mod-rewrite,virtualhost,Apache,Redirect,Docker,Mod Rewrite,Virtualhost,背景: 我有一个带apache2的Debian。我可以通过以下ip访问此Debian:192.168.12.28 在这个Debian上,我有两个具有以下IP的容器: -172.18.0.2 -172.19.0.2 问题在于: 我希望从外部访问我的容器1,例如: 192.168.12.28/集装箱1 或 myDomain/container1 我尝试的是: 两个领域: test1.domain.fr具有以下test1.domain.fr.conf: <VirtualHost *:80>
<VirtualHost *:80>
ServerName test1.domain.fr
ProxyPass / http://172.18.0.2:8080/
ProxyPassReverse / http://172.18.0.2:8080/
ProxyRequests Off
</VirtualHost>
<VirtualHost *:80>
ServerName test2.domain.fr
ProxyPass / http://172.19.0.2:8080/
ProxyPassReverse / http://172.19.0.2:8080/
ProxyRequests Off
</VirtualHost>
我所拥有的:
当我想访问192.168.12.28时:
Apache的页面“它工作!”
当我想访问192.168.12.28/test1.domain.fr或192.168.12.28/test2.domain.fr时:
在此服务器上找不到请求的URL/test1(或2).domain.fr
当我想访问test1.domain.fr或test2.domain.fr时:
找不到test1(或2)。domain.fr
谢谢你的帮助和帮助
对不起我的英语!:-)
编辑:我目前正在搜索,但我现在无法让它工作
编辑:我的容器1的配置类似于:“8081:8080”和“444:443”,而我的容器2的配置类似于:“8080:8080”和“443:443”
编辑以下是我的docker compose文件:
第一个容器:
version: '2'
services:
php:
build: php
ports:
- "8080:8080"
- "443:443"
volumes:
- ./php/www:/var/www/html
version: '2'
services:
php:
build: php
ports:
- "8081:8080"
- "444:443"
volumes:
- ./php/www:/var/www/html
第二个容器:
version: '2'
services:
php:
build: php
ports:
- "8080:8080"
- "443:443"
volumes:
- ./php/www:/var/www/html
version: '2'
services:
php:
build: php
ports:
- "8081:8080"
- "444:443"
volumes:
- ./php/www:/var/www/html
如果是单个Docker主机(例如,不在Swarm模式下),则无法将两个容器映射到同一主机端口。。。试试这个:
docker run <...> -p 3000:80 <...> # e.g. for test1
docker run <...> -p 5000:80 <...> # e.g. for test2
参考资料(附带一个完整的示例,说明nginx作为apache的代理):
您的Debian机器中是否有可用的站点?例如:
curl 127.0.0.1/test1.domain.fr
它们不是,我有相同的反应,从外部我没有将我的容器映射到相同的端口,一个映射到8080和443,另一个映射到8081和444。然后你需要调整你的ProxyPass
到docker主机(!)端口:8080和8081(它们在您给定的配置中仍然是相同的)。不,它们不是,一个代理传递是(container1的地址),另一个是(container2的地址)。相同的端口但不相同的地址,对吗?是的…我得到了…但端口是相同的。