Назад | Перейти на главную страницу

Проблемы с прокси-сервером Apache: неверные запросы, изменение доменного имени на IP-адрес и многое другое

У нас есть веб-сервер Apache (действующий как прокси), который находится перед несколькими серверами, на которых работают разные приложения: IIS, Tomcat, jBoss и т. Д. Сервер Apache действует как прокси на нашем единственном статическом внешнем IP-адресе. У нас есть несколько доменных имен, указывающих на один IP-адрес, и Apache перенаправляет / прокси-запросы на правильные серверы.

Одна из проблем заключается в том, что при проксировании на экземпляр IIS6 запросы маршрутизируются нормально, но когда пользователь вводит доменное имя example.com/home, его адресная строка изменяется на 192.168.10.30/home или любой другой внутренний IP-адрес для этого сервер есть. Ой.

Другая проблема заключается в том, что при загрузке страниц из одного и того же экземпляра IIS6 возникают проблемы, когда загружается часть содержимого страницы, но не все. Некоторые изображения «теряются», некоторые JavaScript не загружаются и т. Д.

Примечание. Я не виню IIS6, но это единственное устройство, с которым у нас возникли проблемы.

Вот запись VirtualHost в Apache, которую я использую. Мне что-то не хватает в конфиге?

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ProxyPass / http://192.168.10.50/
    ProxyPassReverse / http://192.168.10.50/
    ProxyPreserveHost On
</VirtualHost>

Вот ошибка прокси 502, которая ИНОГДА появляется в запросах (может быть любой случайный запрос - css, js, html и т. д.):

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>502 Proxy Error</title>
</head><body>
<h1>Proxy Error</h1>
<p>The proxy server received an invalid response from an upstream server.<br />
The proxy server could not handle the request <em><a href="/public/example/js/jquery-1.3.2.min.js">GET&nbsp;/public/example/js/jquery-1.3.2.min.js</a></em>.<p>
Reason: <strong>Error reading from remote server</strong></p></p>
</body></html>

Сам IIS не будет вызывать это перенаправление, если он специально не настроен для этого. Скорее всего, это что-то в коде, выполняющее перенаправление, или правило обратного прокси-сервера Apache, вызывающее это.

Хороший способ сузить его - протестировать локально в поле IIS и посмотреть, перенаправляет ли он. (хотя тест может быть испорчен, так как вы будете тестировать с другим IP). Если он перенаправляет туда, то вы знаете источник, в противном случае он находится на уровне прокси.

Проверять, выписываться Директива ProxyPreserveHost