Apache verliert „zufällig“ VirtualHost-Konfigurationen

Apache verliert „zufällig“ VirtualHost-Konfigurationen

Ich hoffe, dass jemand Licht in dieses Problem bringen kann, das ich anderswo nicht lösen konnte. Wir betreiben einen Apache-Server (2.2.15), der für den grundlegenden Lastausgleich verwendet wird, aber letztendlich ProxyPass-Anweisungen für unsere verschiedenen Backend-Server verwendet.

Das Problem scheint darin zu liegen, dass Apache „zufällig“ bestimmte Virtualhost-Dateien nicht mehr richtig lädt (oder, was wahrscheinlicher ist, wir verursachen dies unwissentlich) und wir 404- oder Proxy-Fehler von Apache erhalten.

Es gibt keine Fehler im error_log, ich habe auch bestätigt, dass httpd -S immer noch anzeigt, dass der virtuelle Host geladen ist, aber das Merkwürdige ist, dass es wieder funktioniert, wenn ich ein httpd-Reload ausführe. Der Server hat ~2 GB freien Speicher.

Wir haben eine Include vhosts/active-Direktive in unserer httpd.conf-Datei und in diesem Verzeichnis befinden sich symbolische Links zu den eigentlichen vhost-Konfigurationsdateien (ich glaube nicht, dass das damit zusammenhängt, wollte es aber offenlegen) und wir laden etwa 40 verschiedene vhost-Konfigurationen. Hier ist ein Beispiel von einer bestimmten, die relativ häufig vorkommt (es ist vielleicht auch erwähnenswert, dass es sich anscheinend nur um bestimmte vhost-Dateien wie diese handelt):

<VirtualHost 10.10.0.77:80>

    ServerName url.mysite.com
    ServerAlias url
    Options +FollowSymLinks
    ProxyPreserveHost On

    ProxyPass / http://hostname.internaldomain.local:8081/
    ProxyPassReverse / http://hostname.internaldomain.local:8081/

</VirtualHost>

<VirtualHost 10.10.0.77:443>
    ServerName url.mysite.com
    ServerAlias url
    RewriteEngine On
    SSLEngine on
    SSLProxyEngine on
    SSLProxyVerify none
    SSLCertificateFile /etc/httpd/conf/ssl/mycert.com.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl/mycert.key
    SSLCertificateChainFile /etc/httpd/conf/ssl/mycert_chain.crt
    Options +FollowSymLinks
    ProxyPreserveHost On

    ProxyPass / http://hostname.internaldomain.local:8081/
    ProxyPassReverse / http://hostname.internaldomain.local:8081/

</VirtualHost>

aus httpd.conf:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
SetEnv proxy-initial-not-pooled 1

Include vhosts/active/*.active
<Location /balancer-manager>
SetHandler balancer-manager

Order Deny,Allow
Deny from all
Allow from .mydomain.com
</Location>

<IfModule mod_headers.c>
RequestHeader unset Expect early
</IfModule>

Vielen Dank für Ihre Hilfe/Ideen, da ich bei der Suche zu diesem speziellen Problem nicht weitergekommen bin!

Antwort1

Ich sehe 2 mögliche Ursachen:

  1. Wenn Apache 2.2 versucht, Inhalte hinter der ProxyPass-URL zu laden und nicht reagiert, funktioniert der gesamte virtuelle Host, der diesen ProxyPass verwendet, manchmal nicht mehr. Getestet auf Debian Squeeze und Wheezy mit standardmäßigem Apache 2.2.

  2. Auf Ihrem Server können auch zufällige Probleme mit dem DNS-Resolver auftreten, die die Zuordnung des Servernamens zum virtuellen Host beeinträchtigen.

Sie können versuchen zu testen, ob dies die erste Ursache ist, indem Sie 10.10.0.77:80 nach IP statt nach Servername laden.

verwandte Informationen