Apache虚拟主机通过www.example.com在localhost:8000上为wordpress重定向

时间:2018-11-14 11:37:15

标签: apache localhost port virtualhost

我要将2个wordpress网站(其中一个是子域)移到Docker容器下的本地计算机上进行开发。

我想使用hosts文件通过其域名在开发计算机中访问它们,但是我正在努力使我的apache虚拟主机正常工作。

比方说:
网站1是“ www.example.com”
网站2是“ sub.example.com”
每个都有自己的MySQL数据库和wordpress代码库,分别在不同的docker-compose容器上设置。

所以:
网站1:http://localhost:8000上的wwww.example.com
网站2:http://localhost:8001上的sub.example.com
都可以通过localhost:8000和localhost:8001正常工作

我将本地主机文件更改为:

127.0.0.1       localhost  
127.0.0.1       example.com www.example.com sub.example.com

在这种情况下,我正在努力设置apache虚拟主机, 这是我尝试过的:

<VirtualHost *:80>
    ServerName www.example.com
    ProxyPass /  http://localhost:8000/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    ProxyPass /  http://localhost:8001/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

直接进入http://localhost:8000http://localhost:8001即可。

我去http://www.example.com时遇到以下错误:

  

服务不可用
  由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
  网址为www.example.com端口80的Apache / 2.4.25(Debian)服务器

http://sub.example.com上:

  

服务不可用
  由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
  sub.example.com端口80上的Apache / 2.4.25(Debian)服务器

有人可以向我指出如何设置虚拟主机的正确方向吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以尝试检查var/log/httpd中的日志(也可以尝试sudo locate access.log)以查看实际发生的错误。

您缺少的一件事是ProxyPassReverse,如果您的网站正在重定向,它将重写URL。有了它,您的配置将如下所示

<VirtualHost *:80>
    ServerName www.example.com
    ProxyPass /  http://localhost:8000/
    ProxyPassReverse /  http://localhost:8000/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    ProxyPass /  http://localhost:8001/
    ProxyPassReverse /  http://localhost:8001/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

答案 1 :(得分:0)

我了解我的问题在这里可能不合时宜,但是由于我设法解决了我的问题,因此希望您将我的回答保留在这里,以便对他人有所帮助。 < / p>

我没有提到apache服务器正在其自己的Docker容器中运行。

这是我解决问题的方法:

在主机中:

在主机文件中包含www.example.com,example.com和sub.example.com:

127.0.0.1       localhost  
127.0.0.1       example.com www.example.com sub.example.com

在apache docker容器中:

由于apache在其自己的docker容器中运行,因此localhost:8000指向apache docker容器的localhost,在此不正确。
它需要指向主机的IP地址,在我的情况下是192.168.1.100。

<VirtualHost *:80>
    ServerName www.example.com
    ProxyPass /  http://192.168.1.100:8000/
    ProxyPassReverse /  http://192.168.1.100:8000/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    ProxyPass /  http://192.168.1.100:8001/
    ProxyPassReverse /  http://192.168.1.100:8001/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>

重新启动apache

在每个Worpdress网站上:

最后要做的是更改“ site_url”和“ home”设置以指向主机的ip地址(此处为192.168.1.100)。 这可以通过2种方式完成:
通过转到wordpress数据库,表wp_options并进行以下修改:
site_url home http://192.168.1.100:8000 以访问www.example.com和example.com;和
site_url home 到sub.example.com

http://192.168.1.100:8001

或登录到Wordpress信息中心(/ wp-admin),然后转到设置并进行以下修改:
WordPress地址(URL)站点地址(URL)更改为 http://192.168.1.100:8000 用于www.example.com和example.com;和
WordPress地址(URL)网站地址(URL)到sub.example.com

http://192.168.1.100:8001

您不需要重新启动Wordpress容器,但是如果遇到任何错误,请重新启动它们并再次检查。