Подтвердить что ты не робот

Прокси-сервер получил неверный ответ от восходящего сервера

У нас есть приложение, развернутое на tomcat. Для доступа к приложению мы используем apache, который отправляет запросы tomcat. Случайный браузер дает следующий ответ.

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /sampleapp/<http://samplehost.com:8080/sampleapp/>.
Reason: Error reading from remote server
________________________________
Apache/2.2.21 (Unix) Server at samplehost.com Port 8080

Эта ошибка не всегда срабатывает, и до сих пор мы получаем это на клиентской машине только с IE. На том же клиентском компьютере с Firefox он работает хорошо.

Ниже приведена трассировка ошибок из журналов Apache для отказавшего запроса

[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] (20014)Internal error: proxy: error reading status line from remote server localhost:8081, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm
[Thu Mar 22 02:51:08 2012] [error] [client 10.36.64.137] proxy: Error reading from remote server returned by /sampleapp/opp/searchResult.htm, referer: http://samplehost.com:8080/sampleapp/opp/showSearchHome.htm

Ничего не печатается в журналах tomcat, когда запрос терпит неудачу.

Ниже приведена информация, связанная с установленной версией apache

-bash-3.00$ ./httpd -v
Server version: Apache/2.2.21 (Unix)
Server built:   Sep 21 2011 20:00:58

При попытке найти модули загружены, я получаю следующую ошибку

-bash-3.00$ /usr/local/apache2/bin/apachectl -t -D DUMP_MODULES
httpd: Syntax error on line 64 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_authnz_ldap.so into server: ld.so.1: httpd: fatal: libldap-2.4.so.2: open failed: No such file or directory
4b9b3361

Ответ 1

Это не упоминается в вашем сообщении, но я подозреваю, что вы инициируете SSL-соединение из браузера в Apache, где настроены VirtualHosts, а Apache выполняет прокси-сервер для вашего Tomcat.

Существует серьезная ошибка (некоторые версии?) IE, которая отправляет "неправильную" информацию хоста в SSL-соединение (см. ниже EDIT) и смущает Apache VirtualHosts. Короче, представленное имя сервера - это одно из обратных DNS-адресов IP-адреса, а не URL-адреса.

Обходной путь заключается в том, чтобы иметь один IP-адрес для имени виртуального хоста/сервера SSL. Короче, вы должны получить что-то вроде

1 имя сервера == 1 IP-адрес == 1 сертификат == 1 Apache Virtual Host

ИЗМЕНИТЬ

Хотя вывод верен, идентификация проблемы лучше описана здесь http://en.wikipedia.org/wiki/Server_Name_Indication