Apache 基于名称的虚拟主机 - 配置 httpd.conf 文件

Apache 基于名称的虚拟主机 - 配置 httpd.conf 文件

我正在服务器的以下位置的 Tomcat 上运行 Web 应用程序。

/var/tomcat/webapps/SoccerApp

我正在寻找使用以下虚拟主机更新 Tomcat httpd.conf 文件...

<VirtualHost *:80>
DocumentRoot /var/tomcat/webapps/SoccerApp/MyTeam
ServerName www.mysoccerapp.com
</VirtualHost> 

由于目录 MyTeam 不存在,因此会出现 404 错误。但是,我的应用程序的行为方式是,它使用此 URL 目录作为要显示数据的足球队的名称,因此它永远不会是服务器上的物理文件夹。尽管如此,我希望 www.mysoccerapp.com 解析为 webapps/SoccerApp/MyTeam,即使目录不存在。

这有意义吗?关于如何实现这一点,您有什么想法吗?归根结底,我想做以下事情...

www.teamone.com -> runs /webapps/SoccerApp/TeamOne
www.teamone.com -> runs /webapps/SoccerApp/TeamTwo

...其中 TeamOne 和 TeamTwo 不是物理目录,而仅仅由我的 SoccerApp 应用程序处理为当前足球队来显示数据。

非常感谢!

戴夫。

答案1

您需要使用 mod_proxy 设置反向代理。然后您可以将这两个 URL 指向处理网站的 Web 应用程序。

Apache 文档对此进行了很好的解释,但以下是来自我们某个网站的相关部分:

 ProxyRequests off
        <Location /app>
                ProxyPass https://www.ourwebsite.com/
                ProxyHTMLURLMap https://www.ourwebsite.com /app
                ProxyPassReverse https://www.ourwebsite.com/
                SetOutputFilter  proxy-html
                ProxyHTMLURLMap  /      /app/
                ProxyHTMLURLMap  /app  /app
                RequestHeader    unset  Accept-Encoding
        </Location>

相关内容