php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟
我正在使用
PHP 5.4.21运行Apache 2.4.6(Amazon)的标准安装,使用以下配置为我的虚拟主机:
DirectoryIndex index.php # ... FallbackResource /index.php 我的index.php是简单的缩影: <?php echo "Hello world"; 访问http://< server-name> /神秘地显示整页只有五秒钟!任何其他页面都有预期的响应时间(这很快). 我发现,这五秒钟与Keep-Alive功能的默认等待时间有关;在这种情况下,在Apache等待时间之后断开连接之前,不会发送分块响应的最后几个字节.顺便说一句,这也完全破坏了持久连接给你带来的任何好处. 这是Apache的已知错误还是我错过了一些非常明显的东西?
2017/04/18:这已在Apache 2.4.25:
https://bz.apache.org/bugzilla/show_bug.cgi?id=58292中修复
从this bug report开始,我意识到这个问题可能与DirectoryIndex指令有关. 标准Apache安装在配置中附带以下部分: <IfModule dir_module> DirectoryIndex index.html </IfModule> 此语句后面的任何指令(例如虚拟主机中的指令)都不会覆盖此设置;相反,它会被添加到请求索引时将尝试的页面堆栈中.当您执行strace httpd -X并在读取请求后立即检查stat()调用时,可以确认此行为,例如: stat("/path/to/vhost/index.html",0x7fff9dc41b90) = -1 ENOENT stat("/path/to/vhost/index.php",{st_mode=S_IFREG|0664,st_size=130,...}) = 0 虽然我无法准确说明原因,但在指定DirectoryIndex index.php之前必须清除任何以前的DirectoryIndex指令,即index.php必须是尝试处理请求的第一个页面. 这可以使用以下配置完成: DirectoryIndex disabled DirectoryIndex index.php (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |