Apache «случайно» теряет конфигурации VirtualHost

Apache «случайно» теряет конфигурации VirtualHost

Я надеюсь, что кто-то сможет пролить свет на эту проблему, которую я не смог решить в другом месте. Мы используем сервер Apache (2.2.15), используемый для базовой балансировки нагрузки, но в конечном итоге использующий директивы ProxyPass для наших различных внутренних серверов.

Проблема, по-видимому, заключается в том, что Apache «случайно» больше не загружает должным образом определенные файлы виртуального хоста (или, что более вероятно, мы сами этого не осознаем), и мы видим ошибки 404 или прокси от Apache.

В error_log нет ошибок, я также подтвердил, что httpd -S по-прежнему показывает, что vhost загружен, но любопытно то, что если я выполню httpd reload, он снова начинает работать. На сервере ~2 ГБ свободной памяти.

У нас есть директива Include vhosts/active в нашем файле httpd.conf, и внутри этого каталога находятся символические ссылки на фактические файлы конфигурации vhost (не думаю, что это связано, но хотелось бы раскрыть), и мы загружаем около 40 различных конфигураций vhost. Вот пример одного из них, который происходит относительно часто (также стоит упомянуть, что это, похоже, касается только определенных файлов vhost, таких как этот):

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

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

Спасибо за вашу помощь/идеи, так как поиск информации по этому конкретному вопросу ни к чему не привел!

решение1

Я вижу 2 возможные причины:

  1. Когда Apache 2.2 пытается загрузить контент за URL ProxyPass и он не отвечает, то иногда весь vhost, использующий этот ProxyPass, перестает работать. Протестировано на Debian Squeeze и Wheezy с Apache 2.2 по умолчанию.

  2. На вашем сервере также могут возникать случайные проблемы с DNS-резолвером, которые влияют на сопоставление ServerName с vhost.

Вы можете попробовать проверить, является ли это первой причиной, загрузив 10.10.0.77:80 по IP вместо ServerName.

Связанный контент