Apache가 VirtualHost 구성을 "무작위로" 잃습니다.

Apache가 VirtualHost 구성을 "무작위로" 잃습니다.

다른 곳에서는 해결하지 못했던 이 문제에 대해 누군가가 밝힐 수 있기를 바랍니다. 우리는 기본 로드 밸런싱에 사용되는 Apache(2.2.15) 서버를 실행하고 있지만 궁극적으로는 다양한 백엔드 서버에 ProxyPass 지시문을 사용합니다.

문제는 Apache가 더 이상 "무작위로" 특정 가상 호스트 파일을 적절하게 로드하지 않고(또는 우리가 무의식적으로 이 문제를 일으키고 있을 가능성이 높음) Apache에서 404 또는 프록시 오류가 표시된다는 것입니다.

error_log에는 오류가 없습니다. 또한 httpd -S가 여전히 가상 호스트가 로드된 것으로 표시되는 것을 확인했습니다. 그러나 흥미로운 부분은 httpd reload를 실행하면 다시 작동하기 시작한다는 것입니다. 서버에는 ~2GB의 여유 메모리가 있습니다.

우리는 httpd.conf 파일에 포함 vhosts/active 지시문을 가지고 있으며 그 디렉토리 안에는 실제 가상 호스트 구성 파일에 대한 심볼릭 링크가 있습니다(이것이 관련되어 있다는 것을 믿지는 않지만 공개하고 싶었습니다). 그리고 우리는 약 40개의 다른 가상 호스트를 로드하고 있습니다 구성. 다음은 상대적으로 자주 발생하는 특정 사례입니다(이와 같은 특정 가상 호스트 파일에만 해당되는 것으로 보인다는 점도 언급할 가치가 있습니다).

<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가 ProxyPass URL 뒤에 콘텐츠를 로드하려고 시도하고 응답하지 않으면 때때로 이 ProxyPass를 사용하는 전체 가상 호스트가 작동을 중지합니다. 기본 Apache 2.2를 사용하여 Debian Squeeze 및 Wheezy에서 테스트되었습니다.

  2. 서버에서 DNS 확인자와 관련하여 임의의 문제가 발생할 수도 있으며, 이는 ServerName과 가상 호스트의 매핑에 영향을 미칩니다.

이것이 첫 번째 원인인지 여부는 ServerName 대신 IP로 10.10.0.77:80을 로드하여 테스트해 볼 수 있습니다.

관련 정보