Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php nginx在服务静态文件时是否调用外部脚本(传递请求信息)?_Php_Nginx_Readfile - Fatal编程技术网

Php nginx在服务静态文件时是否调用外部脚本(传递请求信息)?

Php nginx在服务静态文件时是否调用外部脚本(传递请求信息)?,php,nginx,readfile,Php,Nginx,Readfile,我正在一个服务器上设置下载日志记录,该服务器承载播客录制。我们只想轻松地登录到MySQL的文件下载的时间戳和请求的IP地址 由于这些文件的平均大小至少为150MB,我认为使用readfile()是一个坏主意(不要让PHP在文件下载的整个过程中都运行),而是必须将文件存储在不同的位置,PHP在登录后将其重定向到该位置 当然,问题是一旦他们被重定向,他们可能会复制重定向的链接并使用它,无意中绕过下载日志记录。我想避免这样 我认为我的最佳选择是将nginx配置为在提供文件之前调用辅助脚本,将请求数据传

我正在一个服务器上设置下载日志记录,该服务器承载播客录制。我们只想轻松地登录到MySQL的文件下载的时间戳和请求的IP地址

由于这些文件的平均大小至少为150MB,我认为使用readfile()是一个坏主意(不要让PHP在文件下载的整个过程中都运行),而是必须将文件存储在不同的位置,PHP在登录后将其重定向到该位置

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

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

是的,您可以使用


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

太棒了,谢谢,我最终使用了access\u by\u lua,并将代码设置为
ngx.location.capture
调用我的下载日志脚本。使用
content\u by\u lua
似乎会阻止请求文件的实际送达。
location /file {
   content_by_lua 'os.execute("php cli.php ',ngx.var.remote_addr,'")';
}