在同一个docker容器上有多个vhost

Fab*_*ert 7 apache virtualhost docker

我正在尝试在同一个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
Run Code Online (Sandbox Code Playgroud)

我还在/etc/hosts主机(OS X)中声明了两个.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 webmaster@dummy.dev
    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 webmaster@tests.dev
    ErrorLog logs/tests.dev-error_log
    CustomLog logs/tests.dev-access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但是,在实践中,访问dummy.dev或tests.dev实际上是有用的/var/www/html/default.这就好像Apache没有意识到正在调用哪个主机(尽管$_SERVERPHP中的转储确实显示了预期的HTTP_HOST值,即:127.0.0.1,dummy.dev或者tests.dev,具体取决于我访问的URL.)

我错过了什么?

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

(请注意,这是一个不同的问题,如何在同一个域上使用不同的端口托管多个应用程序.在我的情况下,我确实希望虚拟主机全部位于同一个应用程序/端口/容器内.)

Fab*_*ert 3

事实证明这是 Apache 配置问题。

我需要显式启用域名虚拟主机,如下所示:

NameVirtualHost *:80
Run Code Online (Sandbox Code Playgroud)

这个答案有帮助。

Docker 与此事无关。