使用tomcat将请求和头转发到不同的主机

使用tomcat将请求和头转发到不同的主机,tomcat,redirect,header,http-headers,request,Tomcat,Redirect,Header,Http Headers,Request,我前面有一个独立的tomcat服务器,没有apache/nginx,我需要对其进行配置,以便将特定应用程序的所有传入请求及其头路由到不同的主机。换句话说,我需要URL https://host.company.com/app/ 安装在webapps/app中,如下所示: webapps/app/WEB-INF/urlrewrite.xml: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-

我前面有一个独立的tomcat服务器,没有apache/nginx,我需要对其进行配置,以便将特定应用程序的所有传入请求及其头路由到不同的主机。换句话说,我需要URL

https://host.company.com/app/ 安装在webapps/app中,如下所示:

webapps/app/WEB-INF/urlrewrite.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "https://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
    <rule>
        <name>Requests to /app/ will be redirected to https://newhost.company.com/app/</name>
        <from>^/(.*)$</from>
        <to type="permanent-redirect" last="true">https://newhost.company.com/app/$1</to>
    </rule>
</urlrewrite>
如您所见,访问newhost.company.com不包括任何以“?”开头的uri数据。使用标准浏览器时,生成的URL为https://newhost.company.com/app/v1/explore 鉴于上述情况,这是有道理的。然而,我需要那个uri数据来传递到newhost.company.com,我不知道如何让tomcat来做

注意:出于安全目的,将apache/nginx/etc放在tomcat前面不是一个选项,这不是我的要求,管理层的法令当使用时,您需要将use query string=true添加到urlrewrite.xml urlrewrite标记中,以便它通过转发URL上的查询字符串参数

更改为:

<urlrewrite>
改为:

<urlrewrite use-query-string="true">
<urlrewrite>
<urlrewrite use-query-string="true">