Tomcat 6在HAproxy 2后面,只显示一个白色的页面。

问题描述 投票:0回答:1

我和Tomcat 6 (在CentOS 7.6上)的HAproxy 2 (在CentOS 7.7上)有很大的争执,也许有人能帮助我。

我想让我的用户在网页浏览器上放一些东西,如 http:/myapp.mydomain.com。 这将解决HAProxy IP,它将被带到并转发到 http:/TomcatIP:Portsomepathtofile。 我知道有其他方法可以在不涉及HAProxy的情况下实现这个功能,但这只是一个概念证明,以便开始将它作为更多网站的前端并使用负载均衡。

这是我的HAProxy.cfg。

 #  HAProxy  configuration file   #

 global
     maxconn 5000
     log /dev/log local0
     user haproxy
     group haproxy

defaults
     log global
     mode http
     option  log-health-checks
     option  log-separate-errors
     option  dontlog-normal
     option  dontlognull
     option httplog
     option  socket-stats
     retries 5
     maxconn 5000
     option redispatch


#             Front-ends            #

frontend MY_APP
     bind IP:80
     acl is_myapp hdr(Host) -i myapp.mydomain.com
     use_backend backend_myapp if is_myapp

 #           Back-ends               #

 backend backend_myapp
         http-request set-path /myapp/path/tofile
         server myapp IP:Port cookie myapp check

我不知道从这里开始往哪里走,如果有任何帮助,我将非常感激。 补充一些信息。

我继续打开haproxy日志,发现在初始连接后有一堆404行(这是唯一一行有200个OK的行),当代理进入服务器寻找页面的不同组件。我将粘贴一些行,你可以看到。

May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58170 [07/May/2020:17:57:43.502] myapp backend_myapp/myapp 5/0/2/3/10 200 3039 - - ---- 1/1/0/0/0 0/0 "GET / HTTP/1.1"
May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58170 [07/May/2020:17:57:43.513] myapp backend_myapp/myapp 198/0/2/3/203 404 1269 - - ---- 1/1/0/0/0 0/0 "GET /myapp/static/Shared/ext/resources/css/ext-all.css?144580 HTTP/1.1"
May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58171 [07/May/2020:17:57:43.862] myapp backend_myapp/myapp 2/0/1/3/6 404 1231 - - ---- 6/6/1/1/0 0/0 "GET /myapp/static/gxui/gxui-all.css?188160 HTTP/1.1"
May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58172 [07/May/2020:17:57:43.862] myapp backend_myapp/myapp 3/0/1/3/7 404 1275 - - ---- 6/6/2/2/0 0/0 "GET /myapp/static/Resources/Spanish/WorkWithPlusTheme.css?1848857 HTTP/1.1"
May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58175 [07/May/2020:17:57:43.865] myapp backend_myapp/myapp 5/0/1/4/10 404 1223 - - ---- 6/6/2/2/0 0/0 "GET /myapp/static/gxtimezone.js?70721 HTTP/1.1"
May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58174 [07/May/2020:17:57:43.862] myapp backend_myapp/myapp 6/0/2/4/12 404 1279 - - ---- 6/6/1/1/0 0/0 "GET /myapp/static/scaMessage/css/jquery.pnotify.default.css?16960 HTTP/1.1"
May  7 17:57:43 localhost haproxy[6642]: 192.168.18.175:58173 [07/May/2020:17:57:43.863] myapp backend_myapp/myapp 6/0/1/6/13 404 1253 - - ---- 6/6/0/0/0 0/0 "GET /myapp/static/scaMessage/css/jquery-ui.css?16960 HTTP/1.1"

这是我在tomcat服务器的访问日志上看到的内容。

10.2.0.40 [07/May/2020:19:55:15 -0300] GET /myapp/path/tofilemyapp/static/gxcfg.js?70721 HTTP/1.1 404 1043 51E30637266E0CBD1A2488F384378CE6 http-8080-17 1
10.2.0.40 [07/May/2020:19:55:15 -0300] GET /myapp/path/tofilemyapp/static/Shared/ext/adapter/ext/ext-base.js HTTP/1.1 404 1095 51E30637266E0CBD1A2488F384378CE6 http-8080-17 2
10.2.0.40 [07/May/2020:19:55:15 -0300] GET /myapp/path/tofilemyapp/static/Shared/ext/ext-all.js HTTP/1.1 404 1069 51E30637266E0CBD1A2488F384378CE6 http-8080-17 1
10.2.0.40 [07/May/2020:19:55:17 -0300] GET /myapp/path/tofilemyapp/static/gxui/gxui-all.js HTTP/1.1 404 1059 51E30637266E0CBD1A2488F384378CE6 http-8080-17 1
10.2.0.40 [07/May/2020:19:55:17 -0300] GET /myapp/path/tofilemyapp/static/messages.spa.js?70721 HTTP/1.1 404 1057 51E30637266E0CBD1A2488F384378CE6 http-8080-17 1
10.2.0.40 [07/May/2020:19:55:17 -0300] GET /myapp/path/tofilemyapp/static/login.js?2019112512435781 HTTP/1.1 404 1043 51E30637266E0CBD1A2488F384378CE6 http-8080-17 1
10.2.0.40 [07/May/2020:19:55:17 -0300] GET /myapp/path/tofilemyapp/static/Shared/jquery/jquery-1.4.2.min.js HTTP/1.1 404 1093 51E30637266E0CBD1A2488F384378CE6 http-8080-17 1

正如你所知道的,问题是,代理向服务器发出的每一个请求都会附加myapppathtofile部分,所以服务器找不到文件。我想重定向到myapppathtofile,只有第一次请求,当客户端进入到 http:/myapp.mydomain.com。

再次感谢

tomcat haproxy
1个回答
0
投票

我找到了一个解决方法,我没有重写(set-path),而是用重定向的方式,并这样改变前端。

frontend myapp *:80
        acl is_gesa hdr(Host) -i myapp.mydomain.com
        redirect location /myapp/path/tofile if { path / }
        use_backend backend_myapp if is_myapp

(这也可以在后端做,但我想尽可能保持后端干净,出于某些原因)

谢谢大家的热心帮助!

© www.soinside.com 2019 - 2024. All rights reserved.