是否有某种方式可以“嵌入”脚本来下载/删除网络服务器内的文件?

是否有某种方式可以“嵌入”脚本来下载/删除网络服务器内的文件?

我需要让服务器按如下方式工作:

检查请求的文件是否存在于本地。

  • 如果有,立即提供
  • 如果没有,则将 REQUEST_URI 传递给将下载它的脚本
  • 如果文件有 ?delete=1,则调用脚本将其删除

我已经使用 nginx(使用 404 错误处理程序)和 PHP 成功实现了此行为。问题是,要在另一台服务器上实现此行为,我必须安装/编译 nginx 和 php。

我的问题是,是否有办法从堆栈中删除 php,并安装 nginx(或其他服务器)来完成这项工作。对我来说,理想的方法是直接从服务器运行/调用 bash 脚本/命令。

有人能给我指出正确的方向吗?

答案1

您要做的事情可以非常轻松地通过普通的 CGI 和 shell 脚本完成。如何启用/实现 CGI 取决于服务器。Nginx应该有能力,但我知道 Apache 有能力。请参阅文档或询问有关在给定 Web 服务器上启用 CGI 的具体问题。

简单的 bash 逻辑来测试文件是否存在并显示它:

#!/bin/bash

FILE="/path/to/file"
URI="http://example.com/file"

/bin/echo "Content-type: text/plain"
/bin/echo

if [ -f $FILE ]; then
  /bin/cat $FILE
else
  /usr/bin/wget $URI
fi

您可以解析 ${QUERY_STRING} 以获取删除操作。我将把完整的解决方案和错误处理留给您作为练习。这有点棘手,超出了我们的问答格式的范围。

看:Bash CGI 脚本中 QUERY_STRING 的解析

相关内容