Ошибка приложения passthru при использовании apache mod_proxy

Хейас. Я использую mod_proxy с apache2, предоставляя возможность vhost нескольким приложениям сервлета, работающим на локальном компьютере. Он работает нормально, по большей части. Запросы приходят в apache, а затем направляются в приложение, привязанное к порту на локальном хосте. Приложение получает запрос и отвечает, а Apache возвращает его клиенту.

Проблема, с которой я сталкиваюсь, заключается в том, что приложение выдает 500 ошибок, а mod_proxy их топает. Часто эти ошибки возникают в запросе ajax, и ошибка обрабатывается в javascript на стороне клиента. Например, вызов createObject(name) на стороне сервера может вызвать исключение NameNotUniqueException , которое будет возвращено как 500. После этого клиентский javascript может отобразить соответствующее сообщение об ошибке.

Когда приложение выдает ошибку (что приводит к ответу 500 на mod_proxy), apache топает сообщение об ошибке и возвращает

500 Внутренняя ошибка сервера

Внутренняя Ошибка Сервера

Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос.

.. сообщение об ошибке на стороне сервера apache.

Я хочу, чтобы mod_proxy передал исходные 500 обратно клиенту. Есть ли директива, которую я пропустил, которая предотвращает уничтожение 500?

ТИА


person Andrew Taylor    schedule 28.03.2010    source источник
comment
Как насчет использования mod_proxy_ajp или mod_jk? Мне кажется, они больше приспособлены для подключения Apache к сервлетам.   -  person Jackson Miller    schedule 28.03.2010
comment
хорошее предложение. Приложение представляет собой автономный веб-движок dyn с питанием от пристани. Возможно, мне следует посмотреть на соединения ajp причала.   -  person Andrew Taylor    schedule 28.03.2010
comment
Хм, mod_proxy кажется предпочтительным методом (docs.codehaus.org/ display/JETTY/Configuring+AJP13+Using+mod_jk). Поэтому я удивлен, что не нашел решения этой проблемы.   -  person Andrew Taylor    schedule 28.03.2010


Ответы (2)


У тебя есть

 ProxyRequests Off
 ProxyErrorOverride Off
 ProxyPass /path/ http://backend.ip/path/
 ProxyPassReverse / http://backend.domain/

Замените backend.ip и backend.domain вашими значениями (здесь я использую backend.ip, так как он не позволяет apache выполнять DNS-запросы по каждому запросу).

Обычно ошибки сообщаются как есть. Поскольку ProxyErrorOverride по умолчанию отключен. Если этого не происходит с моей конфигурацией, проверьте, действительно ли 500 с вашего внутреннего сервера. Или просто покажите нам свою полную конфигурацию прокси.

person Janning    schedule 23.06.2010

У меня та же проблема: после перехода с apache2/mod_wsgi на apache2 с обратным прокси-сервером на mod_wsgi-express я получаю пустые 500 страниц.

Моя конфигурация (фактический домен заменен на www.example.com):

<VirtualHost *:443>
  ServerName www.example.com

  ProxyRequests Off
  ProxyErrorOverride Off
  ProxyPass         /  http://localhost:8001/
  ProxyPassReverse  /  https://www.example.com/
  ProxyPreserveHost On
  RequestHeader set X-Forwarded-Proto "https"

  ErrorLog /var/log/apache2/www.example.com.error.log
  LogLevel warn
  CustomLog /var/log/apache2/www.example.com.log combined

  SSLEngine On
  SSLCertificateFile    /etc/letsencrypt/live/www.example.com/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
  SSLCertificateChainFile       /etc/letsencrypt/live/www.example.com/fullchain.pem
</VirtualHost>
person mick88    schedule 08.05.2019
comment
Моя проблема, похоже, не с apache, а с mod_wsgi-express. - person mick88; 10.05.2019