3

やあ。私はmod_proxyをapache2で使用しており、ローカルマシンで実行されている複数のサーブレットアプリにvhost機能を提供します。ほとんどの場合、正常に動作します。リクエストはapacheに入り、ローカルホストのポートにバインドされたアプリケーションに送信されます。アプリはリクエストを受信して​​応答し、apacheによってクライアントに返送されます。

私が抱えている問題は、アプリケーションが500のエラーを配信し、mod_proxyがそれらを踏みにじることです。多くの場合、これらのエラーはajaxリクエストで発生し、エラーはクライアント側のjavascriptで処理されます。たとえば、サーバー側のcreateObject(name)を呼び出すと、NameNotUniqueExceptionがスローされ、500として返されます。クライアントのJavaScriptは、適切なエラーメッセージを表示する場合があります。

アプリケーションによってエラーがスローされると(mod_proxyに対して500の応答が発生します)、apacheはエラーメッセージを踏み鳴らして戻ります。

500内部サーバーエラー

内部サーバーエラー

サーバーで内部エラーまたは構成ミスが発生し、リクエストを完了できませんでした。

..ストックApacheサーバー側のエラーメッセージ。

mod_proxyが元の500をクライアントに戻すようにしたい。500の破壊を防ぐために私が見逃した指令はありますか?

TIA

4

2 に答える 2

4

ありますか

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

backend.ipとbackend.domainを自分の値に置き換えます(apacheが各リクエストでdnsクエリを実行できないようにするため、ここではbackend.ipを使用しています)。

通常、エラーはそのまま報告されます。ProxyErrorOverrideはデフォルトでオフになっているためです。これが私の構成で起こらない場合は、500が本当にバックエンドサーバーからのものであるかどうかを確認してください。または、完全なプロキシ構成を表示してください。

于 2010-06-23T10:45:13.927 に答える
-1

同じ問題があり、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>
于 2019-05-08T08:44:50.153 に答える