将 $request_body_file 复制到另一个文件中

将 $request_body_file 复制到另一个文件中

我需要将请求正文的二进制内容存储到服务器文件系统中的文件中。

没有可用的 CGI、PHP 或任何其他可执行方法,因此只能使用 nginx 的东西。我发现,当 POSTing 时,nginx 会将请求主体的内容保存到 $request_body_file 指向的特定文件中。是否有任何 nginx 指令将此文件复制到服务器内的某个位置(服务器具有写入权限)?

欢迎提出任何其他建议。

答案1

您可以使用 选择服务器放置临时文件的位置client_body_temp_path,并client_body_in_file_only防止 nginx 在请求结束时删除文件(并且可能强制保存到文件,即使请求很小?我不确定,文档对此不是很清楚)。因此,类似这样的操作会起作用:

location /upload {
    client_body_temp_path /home/my_upload_directory/;
    client_body_in_file_only on;

    client_max_body_size 2G;
}

这将创建以下形式的文件/home/my_upload_directory/000000001。我认为没有办法更改文件名。

相关内容