在同一个Docker容器上有多个虚拟主机

问题描述 投票:7回答:3

我正在尝试在一个相同的Docker容器和端口上运行两个不同的域。

Docker容器运行CentOS。 docker-compose.yml看起来像这样:

web:
  image: fab/centos
  ports:
    - "80:80"
  volumes:
    - ./src/httpd.conf:/etc/httpd/conf/httpd.conf
    - ./src:/var/www/html
    - ./src/hosts:/etc/hosts
  environment:
   - VIRTUAL_HOST=dummy.dev,tests.dev

我还在主机(OS X.)的/etc/hosts内声明了两个.dev域名

自从我配置虚拟主机以来已经有一段时间了。我的理解是,我只需要声明它们,并且Apache将根据请求的HTTP HOST自动提供适当的文件。

这就是我所拥有的,在httpd.conf的末尾添加:

<VirtualHost *:80> # first host = default host
    DocumentRoot /var/www/html/default
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html/dummy
    ServerName dummy.dev
    ServerAdmin [email protected]
    ErrorLog logs/dummy.dev-error_log
    CustomLog logs/dummy.dev-access_log common
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /var/www/html/tests
    ServerName tests.dev
    ServerAdmin [email protected]
    ErrorLog logs/tests.dev-error_log
    CustomLog logs/tests.dev-access_log common
</VirtualHost>

但是,实际上,访问dummy.dev或tests.dev实际上是为/var/www/html/default服务的。好像Apache没有意识到正在调用哪个主机(尽管PHP中的$_SERVER转储确实显示了预期的HTTP_HOST值,即:127.0.0.1,dummy.dev或tests.dev取决于哪个)我访问的网址。)

我想念什么?

我不清楚这是Apache问题还是Docker问题。

((请注意,这与如何在具有不同端口的同一域中托管多个应用程序是一个不同的问题。对于我而言,我确实希望虚拟主机都位于同一应用程序/端口/容器内/上)。] >

我正在尝试在一个相同的Docker容器和端口上运行两个不同的域。 Docker容器运行CentOS。 docker-compose.yml看起来像这样:网络:图像:fab / centos端口:-“ 80:...

apache docker virtualhost
3个回答
3
投票

结果证明这是一个Apache配置问题。


2
投票

fab/centos在公共docker hub中不存在,因此不确定为什么会遇到此问题。


0
投票

在您的httpd配置中打开NameVirtualHost:

© www.soinside.com 2019 - 2024. All rights reserved.