在提供静态文件时,让nginx调用外部脚本(传递请求信息)吗?

时间:2015-01-03 04:17:18

标签: php nginx readfile

我正在托管播客录制的服务器上设置下载日志记录。我们只想轻松地将使用时间戳下载的文件登录到MySQL并请求IP地址。

由于这些文件平均至少150MB,我认为使用readfile()会是一个坏主意(不希望PHP在文件下载的整个时间内运行),而是必须将文件存储在不同的文件中PHP记录后将其重定向到的位置。

问题当然是,一旦重定向,他们就可能复制该重定向链接并使用它,无意中绕过了下载日志记录。我想避免这种情况。

我认为最好的办法是让nginx配置为在提供文件之前调用辅助脚本,将请求数据传递给它进行处理。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

是的,您可以使用http://wiki.nginx.org/HttpLuaModule

location /file {
   content_by_lua 'os.execute("php cli.php ',ngx.var.remote_addr,'")';
}    

不确定传递IP的语法,但像这样的smth应该有效。您还可以解析日志文件