apache2:根据网址

时间:2017-10-24 09:55:43

标签: apache redirect docker mod-rewrite virtualhost

背景信息:

我有一个带有apache2的Debian。我可以通过以下ip访问此Debian:192.168.12.28。

在这个Debian上,我有两个带有以下ips的容器:

-172.18.0.2

-172.19.0.2

问题:

我想从外面访问我的container1,例如: 192.168.12.28/container1 要么 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>

test2.domain.fr,包含以下test2.domain.fr.conf:

<VirtualHost *:80>
  ServerName test2.domain.fr

  ProxyPass / http://172.19.0.2:8080/
  ProxyPassReverse / http://172.19.0.2:8080/
  ProxyRequests Off
</VirtualHost>

我已启用域名:

a2ensite test1.domain.fr
a2ensite test2.domain.fr

我有什么:

当我想访问192.168.12.28时: Apache的页面&#34;它有效!&#34;

当我想访问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的配置如下:&#34; 8081:8080&#34;和&#34; 444:443&#34;我的container2配置如下:&#34; 8080:8080&#34;和&#34; 443:443&#34;

这里编辑的是我的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

1 个答案:

答案 0 :(得分:1)

如果它是单个Docker主机(例如,不在Swarm模式下),则无法将两个容器映射到同一主机端口...试试这个:

docker run <...> -p 3000:80 <...>   # e.g. for test1
docker run <...> -p 5000:80 <...>   # e.g. for test2

相应地调整ProxyPassProxyPassReverse,例如:

ProxyPass / http://172.18.0.2:3000/     # e.g. for test1
ProxyPass / http://172.19.0.2:5000/     # e.g. for test2

参考(使用nginx作为apache代理的完整示例): https://www.digitalocean.com/community/questions/how-to-bind-multiple-domains-ports-80-and-443-to-docker-contained-applications