我在OSX上有一个简单的Apache 2.2反向代理设置,有三台虚拟主机提供SSL和Open Directoryauthentication,然后将所有内容转发到各自的后端服务器。
对于三个虚拟主机的每一个工作正常,似乎足够快,但如果任何一个主机闲置超过10分钟左右(我没有一个准确的时间),第一个电话需要几乎一分钟,随后的呼叫都是<1秒。 这个延迟绝对是代理服务器,我看不到后端服务器上的stream量,直到等待的最后一秒。
我在这里做错了什么? 什么会导致反向代理延迟这样? 它刷新caching? 我如何去debugging它?
我的虚拟主机都看起来差不多,其余的apacheconfiguration是裸露的骨头,只有我需要的模块和非常基本的设置…
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>
无论主机名是什么,您都有可能在backend.mysite.com遇到DNSparsing问题。 DNSparsing需要很长时间,但是一旦成功,它将被caching几分钟。 一旦caching过期,你又回到原点,再次等待。
要解决此问题,请修复导致问题的DNS服务器,或使用IP地址而不是主机名。