Hi, I encountered a problem after upgrading Apache to 2.2.15. The client will be stuck and load infinitely via the HTTP protocol, but it worked correctly in 2.0.55 before I upgraded.
I tried to sniffer the packet, and found 1. If the page size is larger, most of the page and http header will be received in the client but the last chunk won't be sent out from the Apache. 2. If the page size is small, the client only can see the http header. It seems that some packets are queued in the Apache, ..?! I describe the process as below, 1. Client send http request to the server, http://myhost/web.cgi, the cgi is implemented in GNU CGI which has been dead since 2002. 2. web.cgi fetches the login.html file and sends back to the client. 3. The client gets stuck... There are some things weird: 1. When I remove the directive "Listen 443" or "Keepalive On", then the HTTP can work correctly via "Listen 80" without stall. 2. If both the "Listen 443" and "Listen 80" are enabled, only the HTTPS can work. HTTP will have the problem I just mentioned. Do you guys have any idea about my problem? Why the behavior of dealing with output file is different between HTTP and HTTPS protocol? My Apache configuration ServerRoot "/usr/local/apache" ServerName localhost PidFile /var/run/httpd.pid Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 5 MinSpareServers 5 MaxSpareServers 20 ServerLimit 20000 MaxClients 41 MaxRequestsPerChild 10000 </IfModule> <IfModule perchild.c> NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 </IfModule> Listen 80 User www Group www ServerAdmin y...@example.com UseCanonicalName Off DocumentRoot "/usr/local/apache/htdocs" <Directory "/usr/local/apache/htdocs>" Options FollowSymLinks ExecCGI AllowOverride none Order allow,deny Allow from all </Directory> UserDir diabled ErrorLog /var/log/error_log LogLevel warn <Directory "/usr/local/apache/cgi-bin>" AllowOverride None Options None Order allow,deny Allow from all </Directory> TypesConfig conf/mime.types DefaultType text/plain <IfModule mod_mime_magic.c> MIMEMagicFile conf/magic </IfModule> DirectoryIndex web.cgi AddHandler cgi-script .cgi HostnameLookups Off ServerTokens Full ServerSignature On ReadmeName README.html HeaderName HEADER.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-caref BrowserMatch "^WebDrive" redirect-carefully BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully BrowserMatch "^gnome-vfs" redirect-carefully Listen 443 <IfDefine SSL> AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLPassPhraseDialog builtin SSLSessionCache dbm:/var/log/ssl_scache SSLSessionCacheTimeout 300 SSLMutex file:/var/log/ssl_mutex SSLRandomSeed startup builtin SSLRandomSeed connect builtin SSLCryptoDevice cryptodev <VirtualHost _default_:443> DocumentRoot "/usr/local/apache/htdocs" ServerName www.example.com ServerAdmin y...@example.com ErrorLog /var/log/error_log TransferLog /var/log/access_log SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:-RC4:+AES:+DES:+3DES:+RSA:-RC2:-IDEA:+HIGH:+ME SSLCertificateFile /etc/cert/default SSLCertificateKeyFile /etc/cert/default.prv <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/local/apache"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </VirtualHost> </IfDefine> Thanks in advance. Best regards honercek