重定向 Tomcat 传出流量

重定向 Tomcat 传出流量

如何通过 Url 模式重定向来自 Tomcat 服务器的所有传出流量?

示例:将所有请求从 tomcat 重定向到

它仅用于 Windows 机器上的开发目的。我不想修改我的主机文件,因为我仍然想在浏览器中按原样访问所有内容。

有没有办法像这样配置 tomcat?

编辑:澄清:

当前所有服务都在一个后端服务器上运行,但我想将它们部署在不同的服务器上。因此,基于 / 后的 url 部分,我想将其路由到不同的服务器。

IE :

  • /服务1->服务器1/服务
  • 和 /service2 -> server2/service

答案1

您可以在 tomcat 之前代理请求,例如,在运行 tomcat 的同一台 Web 服务器上安装 apache 服务器(显然在不同的端口上)。为 apache 安装 mod_proxy 并正确重定向到您的前端或后端服务器。

下面是 apache 配置的一个示例:

ProxyPass /我的服务 http://a.backend.url:8080/我的服务-a
ProxyPassReverse /我的服务 http://a.backend.url:8080/我的服务-a

请记住在 apache 中加载正确的模块,您可以参考文档查找 proxy-howto apache。

答案2

使用属性来配置要使用的后端服务器。在笔记本电脑上配置 tomcat 以使用开发后端。您可以为生产后端提供默认属性值,也可以在生产服务器上设置适当的后端。这为您提供了极大的灵活性来配置暂存和性能测试环境。

如果您有多个后端服务,请考虑为每个服务使用一个属性。这样,您就可以将一个服务部署到多个环境中,同时以不同的方式部署其他服务。当服务上的负载需要一台或多台专用服务器时,它还允许扩展服务。

答案3

我在我的机器上本地安装了一个负载均衡器(这里是 nginx)并将其指向为后端服务器。

配置如下:

# This routes all traffic to the LB to a default backend server
location / {
    proxy_pass      http://my.backend.url:8080;
    proxy_redirect  http://my.backend.url:8080/ /;
    proxy_read_timeout 60s;

    proxy_set_header          Host            $host;
    proxy_set_header          X-Real-IP       $remote_addr;
    proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;
}

# This routes all traffic under "/my-service" to the different backend:
# a.backend.url:8080/my-service-a
location /my-service {
    proxy_pass      http://a.backend.url:8080/my-service-a
    proxy_redirect  http://a.backend.url:8080/my-service-a/ /;
    proxy_read_timeout 60s;

    proxy_set_header          Host            $host;
    proxy_set_header          X-Real-IP       $remote_addr;
    proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;
}

相关内容