fragen stichworte

Benutzerdefiniertes Apache ErrorDocument mit Proxy-Balancer und RewriteEngine

Ich habe verschiedene Probleme beim Versuch, meinem Server benutzerdefinierte Fehlerdokumente hinzuzufügen.

Ich verwende einen Proxy-Balancer, um die Last zwischen zwei Instanzen von Zope zu teilen, und einige einfache Umschreiberegeln, um meine Domäne den lokalen Zope-Instanzen zuzuordnen. Ich bin mir ziemlich sicher, dass Zope nicht das Problem ist, aber ich habe es erwähnt, um zu erklären, wohin der Balancer weiterleitet.

Ich habe eine -Anzahl mit Vorschlägen ausprobiert, aber das "nächstgelegene", das ich erhalten kann, ist unten aufgeführt und führt zum Fehler:

"Firefox has detected that the server is redirecting the request for this address in a way that will never complete."

Andere Variationen führen zu:

"The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Additionally, a 503 Service Temporarily Unavailable error was encountered while trying to use an ErrorDocument to handle the request."

Wenn ich ein einfaches

einbezüge

ErrorDocument 503 Hello

Es wird gut dargestellt.

Was mache ich falsch? Ich mache mir Sorgen, dass es etwas mit dem Balancer/Umschreiben zu tun haben könnte, der die benutzerdefinierten Fehler "in den Weg stellt"? Oder dass mein DocumentRoot falsch eingestellt ist?

Der Rest dieser Konfiguration wird ohne benutzerdefinierte Fehler ausgeführt.

<VirtualHost>
  VirtualHost XXX.XXX.XXX.XXX:80>
  ServerAdmin webmaster@localhost
  ServerName sub.domain.com

  <Proxy balancer://domain_dev>
    BalancerMember http://XXX.XXX.XXX.XXX:81
    BalancerMember http://XXX.XXX.XXX.XXX:82
  </Proxy>

  RewriteEngine On
  RewriteRule ^(.*)$ balancer://domain_dev$1 [P,L]

  <Location/>
    Order allow,deny
    Allow from all
  </Location>

</VirtualHost>

Listen 81
Listen 82

<VirtualHost XXX.XXX.XXX.XXX:81>
  CustomLog/var/log/apache2/domain-dev-1.log combined
  ErrorLog /var/log/apache2/domain-dev-error-1.log

  ErrorDocument 503 http://sub.domain.com/custom-errors/customerror.html
  Alias/customerrors/var/www/custom-errors/

  RewriteEngine On
  RewriteRule ^(.*)$ http://localhost:6080/++skin++SandboxSkin/site/++vh++http:sub.domain.com:80/++$1 [P,L]
  RewriteLog/var/log/apache2/domain-dev-rewrite-1.log
  RewriteLogLevel 0


  <Location/>
    Order allow,deny
    Allow from all
  </Location>

</VirtualHost>

<VirtualHost XXX.XXX.XXX.XXX:82>
  CustomLog/var/log/apache2/domain-dev-2.log combined
  ErrorLog /var/log/apache2/domain-dev-error-2.log

  RewriteEngine On
  RewriteRule ^(.*)$ http://localhost:6081/++skin++SandboxSkin/site/++vh++http:sub.domain.com:80/++$1 [P,L]
  RewriteLog/var/log/apache2/domain-dev-rewrite-2.log
  RewriteLogLevel 0

  <Location/>
    Order allow,deny
    Allow from all
  </Location>

</VirtualHost>

antworten

LogLevel-Debug einstellen Ich habe gefunden:

[Mon Sep 14 19:26:06 2009] [debug] proxy_util.c(2015): proxy: connected/++skin++SandboxSkin/site/++vh++http:sub.domain.com:80/++/custom-errors/customerror.html to localhost:6080

Damit wurde bestätigt, dass der Proxy versucht hat, den Fehler vom Standort des Offline-Servers zu beheben.

Hinzufügen:

RewriteCond %{REQUEST_URI} !^/custom-errors/

Der Proxy hat angehalten, alle Umleitungen mit "custom-errors" -Verzeichnissen in der Anforderung neu zu schreiben.

Danach hat die folgende vereinfachte ErrorDocument-Regel gut funktioniert:

DocumentRoot "/var/www"
ErrorDocument 503 "/custom-errors/customerror.html"