apache2:根据url重定向到IP地址(容器的地址)

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>

背景:

我有一个带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>
  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的地址)。相同的端口但不相同的地址,对吗?是的…我得到了…但端口是相同的。