我知道这是一个愚蠢的问题,但我找不到任何相关信息。我正在为一位老客户维护一个网站,到目前为止,我使用 X-SENDFILE 标头来控制对一个相当大的文件的访问。
他的服务器管理员现在更新了 Apache,这导致网站崩溃。经过一番研究,我发现我必须删除选项XSendFileAllowAbove
并添加XSendFilePath
。由于此选项显然无法在 .htaccess 文件中设置(我读过相关内容,也尝试过以确保无误),服务器管理员必须直接添加它。但是,他们拒绝这样做,并说 mod_xsendfile 已被弃用。我搜索以验证这一点,但在任何地方都找不到它。
此外,他们拒绝提出替代方案,所以如果你们知道任何替代方案,我将不胜感激:)。
该文件太大,无法用 PHP 提供服务(至少不容易),我无法访问服务器,只能访问网站代码。
编辑
我一发布问题就发现了这篇文章,它似乎至少表明 mod_xsendfile 在 Apache 2.4 中运行良好: https://superuser.com/questions/1035459/is-mod-xsendfile-not-compatible-with-apache-2-4 这并不能完全回答我的问题,但至少这是一个开始,并且可能有助于某些人搜索相同的问题并找到这个问题。
答案1
已弃用这并不意味着它不能与 Apache 2.4 兼容,而是它违反了他们自己的软件质量政策。毕竟mod_xsendfile
:
- 不是官方支持的标准 Apache 模块。
- 需要单独编译;不在任何存储库中。
- 最初是为 Apache 2 和 2.2 设计的。
- 自 2011 年起,已 6 年未维护。
虽然该模块很简单,但使用这种模块可能会使系统面临安全威胁。因此,这种限制似乎是合理的,而且你肯定也不会在任何共享主机上获得该模块。
希望这里有人可以建议其他解决方案!
答案2
x-sendfile 的“最新”1.0 版本适用于 apache 2.4。在出现连续断开连接的情况后,我不得不将所有服务器从 0.6 更新到 1.0。1.0 版本解决了断开连接的问题。
https://github.com/nmaier/mod_xsendfile/blob/master/mod_xsendfile.c
答案3
您可以使用内置指令,因此无需额外的模块
https://httpd.apache.org/docs/2.4/mod/core.html#enablesendfile