Url rewriting 如何在ApacheTomcat Web应用程序中获取浏览器URL?

Url rewriting 如何在ApacheTomcat Web应用程序中获取浏览器URL?,url-rewriting,apache,httpd.conf,mod-proxy,tomcat,Url Rewriting,Apache,Httpd.conf,Mod Proxy,Tomcat,我已经通过mod_代理使用ApacheTomcat连接器配置了我的web应用程序-请参见下文 <IfModule mod_proxy.c> ProxyPass /myapp http://127.0.0.1:8080/myapp ProxyPassReverse /myapp http://127.0.0.1:8080/myapp </IfModule> 客户2类型 http://client2.mydomain.com/myapp 现在,我想读取URL并解析客户端名

我已经通过mod_代理使用ApacheTomcat连接器配置了我的web应用程序-请参见下文

<IfModule mod_proxy.c>
ProxyPass /myapp http://127.0.0.1:8080/myapp
ProxyPassReverse /myapp http://127.0.0.1:8080/myapp
</IfModule>
客户2类型

http://client2.mydomain.com/myapp
现在,我想读取URL并解析客户端名称(client1或client2)。我的web应用程序的其余部分是根据客户机是谁驱动的(当然,在身份验证之后)。但问题是,当我尝试使用HttpServletRequest的getRequestURL获取URL时,我得到的是而不是client1.mydomain或client2.mydomain。我想,这是因为Apache被用作主调度器,而对Apache httpd的请求被转发到本地主机Tomcat


我不想改变URL的结构(比如client1.mydomain.com/client1),也不想通过UI向用户询问客户端信息。如何实现这一点?

我通过使用AJP连接器而不是mod_代理解决了这个问题

<Location /myapp>
ProxyPass ajp://localhost:8009/myapp
ProxyPassReverse ajp://localhost:8009/myapp
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>

ProxyPassajp://localhost:8009/myapp
ProxyPassReverseajp://localhost:8009/myapp
SetEnv force-proxy-request-1.0 1
SetEnv代理nokeepalive 1
AJP连接器将来自apache的请求转发给tomcat,保留浏览器URL(而mod_proxy将其更改为localhost:8080/myapp),因此我能够从中读取和解析客户端名称

现在,我可以呈现特定于客户端的数据,而无需实际提示用户输入其客户端名称

<Location /myapp>
ProxyPass ajp://localhost:8009/myapp
ProxyPassReverse ajp://localhost:8009/myapp
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>