Apache / Tomcat AJP отказы DNS при туннелировании

У меня есть ситуация, где я могу получить доступ к частному редактору NAT apache2.4 / сервер tomcat7.0 railo4.2 непосредственно от сети узла или локальной сети, но при туннелировании в через удаленный порт SSH направляет заявление, порывает с ошибкой:

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.

Reason: DNS lookup failure for: server-dev:5555

Очевидный ответ был бы то, что сервер-dev является неразрешимым именем хоста, но это не было должно случай здесь потому что lynx server-dev:80 работы локально над сервером или от машины LAN на подсети (имя разрешено через/etc/hosts на клиенте и сервере). Также статические страницы, подаваемые апачской работой, ошибка, кажется, находится на стороне Tomcat или в коннекторе AJP. Я скомпилировал апачей сам из 2.4.9 источников с апрелем 1.5.1. Единственное, кажется, проявляет когда перенаправление портов.

Шоу журнала ошибок Apache:

[Tue Jun 24 22:37:06.911541 2014] [proxy:error] [pid 16858] [client 10.10.10.15:63398] AH00898: DNS lookup failure for: server-dev:5555 returned by /

Нет ничего достойного внимания в catalina.out или любые другие журналы I видят.

Соответствующая апачская конфигурация:

<VirtualHost *:80>
    ServerName server-dev
    UseCanonicalName On

    RewriteCond %{REQUEST_FILENAME} /[^/:]+\.cfml*($|/)
    RewriteRule (.*) ajp://%{HTTP_HOST}:8009$1 [P,L]
</VirtualHost>

Туннель SSH создается из одной трети "человек в средней" системе (10.10.10.15) использование PuTTY со следующими настройками:

Remote: 5555
Local: 10.10.10.101:80

Соответствующая/etc/hosts запись на сервере (это не имеет никакого bind/dnsmasq):

10.10.10.101  server-dev  # servers private ip

Это, кажется, что или файл hosts игнорируется, и разрешение DNS предпринимается или 5 555 номеров порта, путает его так или иначе (как он, думает, что это - часть имени хоста), хотя я не могу думать о серьезном основании ни для одной вещи произойти.

0
задан 24 June 2014 в 16:33
1 ответ

I found the problem. Похоже, что %{HTTP_HOST} содержит номер порта, а также в случаях, когда порт не 80, поэтому правило оценивается как RewriteRule (.*) ajp://server-dev:5555:8009$1 [P,L].

Простое решение: Похоже, что переменная %{SERVER_NAME} не содержит порт.

Итак, правило, которое работает

RewriteRule (.*) ajp://%{SERVER_NAME}:8009$1 [P,L]

CAVEAT: Я забыл, что HTTP_HOST и SERVER_NAME различаются в зависимости от того, какой домен отправляет клиентский браузер. На самом деле мне нужен HTTP_HOST, но только не порт, так что реальным решением будет https://stackoverflow.com/questions/11553939/rewriterule-using-http-host-and-a-different-port

RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
RewriteRule ^ http://%1:12345/ [R,L]
0
ответ дан 5 December 2019 в 13:46

Теги

Похожие вопросы