首页 > 解决方案 > 可以将 Apache 虚拟主机设置为重定向到 Docker 容器吗?

问题描述

我有一个运行 Apache 的 Docker 容器,该容器当前正在监听端口 80。

我试图在同一台服务器上运行另一个网站,这次本机使用 Apache,也监听端口 80。

问题是我不能让两个应用程序都监听同一个端口(Docker 和 Apache)。

我可以设置服务器的本机 Apache 安装以在内部将基于域名的某些请求重定向到我的 Docker 容器吗?例如,Apache 将侦听端口 80,并且请求mycontainer.com将在内部传输到9999Docker 将侦听的端口。

标签: dockerdocker-composeapache2portvirtualhost

解决方案


是的,你可以这么做。我第一次想测试时,我就是这样做的,而且没有问题。

我们有一个运行到端口 80 的 Apache 容器,让我们调用另一个类似的域mycontainer.com,我们也希望在端口 80 上可以访问,但我们不能。

不管你如何运行这些容器,我的意思是docker runor docker-compose,但重点是它们应该在同一个network中。

创建一个名为my_network

docker network create my_network

我称第一个 Apache 为main,后者为the_name one。

所以现在让我们在同一个网络中运行它们:

docker run --name main --network my_network httpd
docker run --name the_name --network my_network another_image

现在您可以执行到the_name容器中并在 Apache conf 路径中创建一个domain.conf包含以下内容的文件:

<VirtualHost *:80>
        ServerName mycontainer.com

        ProxyPreserveHost On
        ProxyPass "/" "http://the_name:9999/"
        ProxyPassReverse "/" "http://the_name:9999/"
        ProxyRequests Off

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

推荐阅读