【发布时间】:2020-05-05 21:37:11
【问题描述】:
我正在与 HAproxy 2(在 CentOS 7.7 上)后面的 Tomcat 6(在 CentOS 7.6 上)发生争执,也许有人可以帮助我。
我希望我的用户在网络浏览器上输入http://myapp.mydomain.com 之类的内容,这将解析 HAProxy IP,并将其转发到http://TomcatIP:Port/some/path/tofile(后端的单个服务器,尚无平衡)。 它似乎配置正确,因为当我将简单的 URL 放在网络浏览器上时,会出现 myapp 的 favicon 和标题,但页面的其余部分保持空白(白色,上面什么都没有,没有错误,什么都没有)。 我知道还有其他方法可以在不涉及 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
正如您所知道的,问题在于,对于代理向服务器发出的每个请求,它都会附加 /myapp/path/tofile 部分,因此服务器找不到文件。 有没有办法来解决这个问题?当客户端进入 http://myapp.mydomain.com 时,我只想重定向到 /myapp/path/tofile 的第一个请求
再次感谢
【问题讨论】:
-
旁注 - 使用 Tomcat 6 的任何特殊原因?最后我知道,至少 9.0.X 是最新的。
-
通常,该应用程序是很久以前开发的,(管理层)无意启动一个将其迁移到新平台的项目。
-
我强烈建议打开 Tomcat 中的访问日志 - 然后您可能会看到请求进来但路径错误,或者其他导致您获得更多信息的东西
-
会调查,如果我找到任何东西,会通知你
-
tomcat 是否配置为响应主机 myapp.mydomain.com?