我必须对Apache的VirtualHost格式和.conf文件产生误解。我想做的是运行N>单个主机上有1个独立站点,每个站点完全包含在Docker容器中(经典的微服务架构)。在主机本身(运行Apache)上,我想创建一个简单的登录页面,其中包含指向所有这些不同站点的链接(即http://localhost/转到登录页面,http://localhost/site1转到一个站点, http://localhost/site2转到其他网站等。
第一个站点(RocketChat,由主机端口8081上的Docker提供)在rocketchat.conf中有以下文本:
<VirtualHost *:80>
ProxyPreserveHost on
ProxyRequests off
ServerName localhost
ProxyPass /chat http://localhost:8081/
ProxyPassReverse /chat http://localhost:8081/
</VirtualHost>
我将此文件放在etc / apache2 / sites-available /中,运行a2ensite,然后重新加载apache。一切都很完美,http://localhost给了我默认的Apache站点,http://localhost/chat给了我RocketChat。
我尝试以完全相同的方式部署第二个站点Xowa(主机端口8082上的Docker服务)。这是xowa.conf:
<VirtualHost *:80>
ProxyPreserveHost on
ProxyRequests off
ServerName localhost
ProxyPass /xowa http://localhost:8082/
ProxyPassReverse /xowa http://localhost:8082/
</VirtualHost>
我启用了网站并重新加载了Apache,但不幸的是,这并不起作用。如果我键入http://localhost:8082,我可以访问Xowa,但是http://localhost/xowa只返回404.更奇怪的是,如果我在Apache上禁用了rocketchat.conf站点(即我做了a2dissite rocketchat.conf)那么Xowa网站运行良好。
我不太清楚如何理解这一点:Apache是否认为rocketchat.conf VirtualHost应该处理请求,然后它会丢弃它,因为它与正确的ProxyPass不匹配?我认为Apache只会在列表中排在第34位。直到找到匹配。这里的任何建议/解释都会非常感激,我对Apache配置相对较新,并且很乐意学习。谢谢!