Apache mod-x-sendfile但是用于远程URL

时间:2017-05-16 07:53:05

标签: php apache2 x-sendfile

我正在编写一个PHP应用程序,用户可以在其中下载一些文件。并非所有用户都可以下载所有文件,并且会在幕后进行一些复杂的权限检查。

由于这种权限检查,我不想公开文件实际所在的URL,因为我想强制用户始终使用验证其凭据的端点。

在我目前的实现中,这都是使用PHP(fread等)编写的。为了最小化内存消耗,这是作为流实现的,这样PHP主要充当代理。

但我想只使用PHP进行身份验证,然后使用Apache2进行实际托管。寻找选项似乎X-Sendfile将是一个理想的选择。

使用X-Sendfile的唯一问题是它只适用于本地文件,而我的文件位于远程存储服务器(不是我的网络服务器)上。

基本上我有一个直接链接到我的存储服务器(我想隐藏):

https://storage.example.com/the-pet-goat.pdf

用户与之交互的公共链接:

https://www.example.com/randomized-id/download

我希望当用户转到https://www.example.com/randomized-id/download时,会检查其凭据,如果成功,则应该(无形地)将其重定向到存储服务器上的文件。

有没有办法实现这一点(使用Apache)? 我找到了X-Accel-Redirect,但那是NGinx

我在SO上发现了一个类似的问题: Alternative to X-sendfile in Apache for sending file given a URL? 但是那个是专门针对S3,Apache(和Ruby on Rails),而这个问题对于Apache来说更通用。

0 个答案:

没有答案