Tomcat 6 за HAproxy 2, показывает только белую страницу - PullRequest
0 голосов
/ 06 мая 2020

Я веду настоящую борьбу с Tomcat 6 (на CentOS 7.6), который стоит за HAproxy 2 (на CentOS 7.7), может быть, кто-нибудь мне поможет.

Я хочу мои пользователи должны установить в веб-браузере что-то вроде http://myapp.mydomain.com, это разрешит HAProxy IP, где он будет взят и перенаправлен на http://TomcatIP: Port / some / path / tofile (один сервер в бэкенде, балансировки пока нет). Кажется, он настроен правильно, потому что, когда я помещаю простой URL-адрес в веб-браузер, появляются значок и заголовок myapp, но остальная часть страницы остается пустой (белая, без каких-либо ошибок, без ошибок, ничего). Я знаю, что есть другие способы сделать это sh без использования 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

Не знаю, куда go отсюда, любая помощь будет принята с благодарностью. Извините, если мой уровень engli sh отключен! Добавляем некоторую информацию:

Я перехожу к включению журнала 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, поэтому сервер не находит файлы. . Есть способ исправить это? Я хочу перенаправить c в / myapp / path / tofile только первый запрос, когда клиент вводит http://myapp.mydomain.com

Еще раз спасибо

1 Ответ

0 голосов
/ 08 мая 2020

Я нашел способ обойти это, вместо перезаписи (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

(это можно было сделать на backend тоже, но я хочу, чтобы backend был как можно более чистым - по какой-то причине)

Спасибо всем за любезную помощь!

...