【问题标题】:How to get VHost Server Name with Java?如何使用 Java 获取 VHost 服务器名称?
【发布时间】:2014-06-15 02:54:17
【问题描述】:

你好 Stackoverflow 社区,

我对获取 Vhost 的服务器名称感到有些困惑。我正在使用我的 apache 和 Tomcat。 Apache 将请求重定向到我的 Tomcat 以启动函数。 关键是我必须识别服务器名称。目的是获取服务器名称并确定服务器名称是否类似于 office23.de,然后服务器必须加载 office23 的配置,如果其他 office 然后加载其他配置。我希望我能解释一下。

到目前为止我做了什么:

我添加到 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:

服务器名称 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

我可以通过虚拟主机地址访问我的应用程序,但是当我尝试获取主机标头时,它说它的 localhost:8080。

我还更改了 Windows 主机文件。

是否有任何机会可以让我获得虚拟主机名?

【问题讨论】:

    标签: java apache tomcat proxy vhosts


    【解决方案1】:

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

    修改 hosts 文件对您没有任何好处,如果您忘记这样做了,以后可能会再次困扰您。

    【讨论】:

    • 你无法想象你帮了我多少:-)
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多