Назад | Перейти на главную страницу

Обратный прокси-сервер Apache вызывает задержку около 40 секунд при первом доступе после простоя

У меня есть простая установка обратного прокси Apache 2.2 на OSX с тремя виртуальными хостами, каждый из которых обеспечивает аутентификацию SSL и Open Directory, прежде чем пересылать все на свои соответствующие внутренние серверы.

Для каждого из трех виртуальных хостов все работает нормально и кажется достаточно быстрым, но если какой-либо из них бездействует более 10 минут или около того (у меня нет точного времени этого) с любого данного хоста, первый вызов принимает почти минуту, затем последующие вызовы <1 с. Эта задержка определенно происходит на прокси, я не вижу трафика на внутреннем сервере до последней секунды ожидания.

Что я здесь делаю не так? Что может вызвать такую ​​задержку обратного прокси? Это обновление кеша? Как мне его отладить?

Все мои виртуальные хосты выглядят примерно одинаково, а остальная часть конфигурации apache - это голый костяк, только модули, которые мне нужны, и очень простая настройка ...

ServerRoot "/usr"
User _www
Group _www
DefaultType text/html

Listen 80
Listen 443
Listen 6660

DocumentRoot /Volumes/data/httpd

# Basic Requirements for a proxy
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so

# Needed for OD Authentication
LoadModule apple_auth_module libexec/apache2/mod_auth_apple.so

# Needed for SSL (duh)
LoadModule ssl_module libexec/apache2/mod_ssl.so

ErrorLog /var/log/apache2/error_log
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog /var/log/apache2/access_log common

<IfModule mod_ssl.c>
    SSLSessionCache shmcb:/var/run/ssl_scache(512000)
    SSLSessionCacheTimeout 300
    SSLMutex file:/var/log/apache2/ssl_mutex
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    AddType application/x-x509-ca-cert crt
    AddType application/x-pkcs7-crl crl
</IfModule>


NameVirtualHost *:80
NameVirtualHost *:443
NameVirtualHost *:6660


<VirtualHost *:443>
ServerName mysite.server.com

SSLEngine On
SSLProxyEngine On
SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"
SSLProtocol -ALL +SSLv3 +TLSv1
SSLProxyProtocol -ALL +SSLv3 +TLSv1
SSLCertificateFile "/etc/certificates/mysite.crt"
SSLCertificateKeyFile "/etc/certificates/mysite.key"

<Location />
    Order deny,allow
    Deny from all
    AuthType Basic
    Require group <my access group>
    Allow from <my test ip>

    Satisfy Any
    AuthName "MyGroup"
</Location>

SetEnv proxy-chain-auth On
ProxyPreserveHost On
ProxyPass / http://backend.mysite.com/ retry=0 keepalive=On
ProxyPassReverse / http://backend.mysite.com/
</VirtualHost>

Вероятно, у вас проблемы с разрешением DNS с backend.mysite.com, каким бы ни было имя хоста на самом деле. Разрешение DNS занимает много времени, но после успешного выполнения оно кэшируется на несколько минут. Как только срок действия кеша истечет, вы вернетесь к исходной точке и снова получите ожидание.

Чтобы решить эту проблему, исправьте тот DNS-сервер, который вызывает проблему, или используйте IP-адрес вместо имени хоста.