Apache pierde configuraciones de VirtualHost "al azar"

Apache pierde configuraciones de VirtualHost "al azar"

Espero que alguien pueda arrojar algo de luz sobre este problema que no he tenido suerte de resolver en otros lugares. Estamos ejecutando un servidor Apache (2.2.15) que se utiliza para el equilibrio de carga básico, pero en última instancia utilizamos directivas ProxyPass para nuestros diversos servidores backend.

El problema parece ser que Apache "al azar" ya no tiene determinados archivos de virtualhost cargados correctamente (o más probablemente, estamos causando esto sin saberlo) y estamos viendo errores 404 o de proxy de Apache.

No hay errores en error_log, también confirmé que httpd -S todavía muestra el vhost cargado, pero lo curioso es que si ejecuto una recarga de httpd, comienza a funcionar nuevamente. El servidor tiene ~2 GB de memoria libre.

Tenemos una directiva Incluir vhosts/active en nuestro archivo httpd.conf, y dentro de ese directorio hay enlaces simbólicos a los archivos de configuración de vhost reales (no crea que esto esté relacionado, pero quería revelarlo), y estamos cargando alrededor de 40 vhost diferentes. configuraciones. A continuación se muestra un ejemplo de uno en particular que ocurre con relativa frecuencia (también vale la pena mencionar que parece que solo se trata de ciertos archivos vhost como este):

<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>

desde 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>

Gracias por su ayuda/ideas, ya que buscar sobre este tema en particular no me llevó a ninguna parte.

Respuesta1

Veo 2 posibles causas:

  1. Cuando Apache 2.2 intenta cargar contenido detrás de la URL de ProxyPass y no responde, a veces todo el host virtual que usa este ProxyPass deja de funcionar. Probado en Debian Squeeze y Wheezy con Apache 2.2 predeterminado.

  2. Es posible que su servidor también esté experimentando problemas aleatorios con la resolución de DNS, que afectan la asignación de ServerName a vhost.

Puede intentar probar, si es la primera causa, cargando 10.10.0.77:80 por IP en lugar de ServerName.

información relacionada