如何使用Java获取VHost服务器名称?

时间:2014-04-29 09:00:01

标签: java apache tomcat proxy vhosts

Hello Stackoverflow社区,

我对获得Vhost的Servername感到有些困惑。我正在使用我的apache和Tomcat。 Apache正在将请求重定向到我的Tomcat以启动一个Function。 要点是我必须确定Servername。目的是获取Servername并决定服务器名称是否像office23.de那样服务器必须加载office23的配置,如果其他办公室然后加载其他配置。我希望我能解释一下。

到目前为止我做了什么:

我添加到Tomcat的server.xml中:     

还在Apache的httpd.conf中添加:

ProxyRequests on

ProxyPass         /getTest/  http://localhost:8080/Test/
ProxyPassReverse  /getTest/  http://localhost:8080/test/

以及加载mod_proxy东西的行。

另外我配置了httpd-vhosts.conf,如下所示:

    ServerName js.local.test.de

DocumentRoot "D:/downloads/xampp/tomcat/webapps"

<Directory />
    Require all granted
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

ErrorLog "D:/downloads/xampp/apache/logs/virtualHost.log"
CustomLog "D:/downloads/xampp/apache/logs/customLog.log" common

我可以通过vhost地址访问我的应用程序,但是当我尝试获取Host Header时,它会说它的localhost:8080。

我也改变了windows hostfile。

是否存在任何允许我获取虚拟名称的机会?

1 个答案:

答案 0 :(得分:0)

如果在反向代理上启用ProxyPreserveHost,则Host:标头将保留在对代理的请求中,而不是替换为ProxyPass中指定的主机名(在您的情况下为localhost)。这应该可以帮助您在后端获得正确的名称。

管理主机文件对你没有任何好处,如果你忘了你那么做了,它可能会在以后回来困扰你。