如何通过 Url 模式重定向来自 Tomcat 服务器的所有传出流量?
示例:将所有请求从 tomcat 重定向到
- http://my.backend.url:8080/我的服务重定向至http://a.backend.url:8080/我的服务-a
- 和http://my.backend.url:8080/my-service2重定向至http://b.backend.url:8080/我的服务-b
它仅用于 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;
}