我需要让服务器按如下方式工作:
检查请求的文件是否存在于本地。
- 如果有,立即提供
- 如果没有,则将 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} 以获取删除操作。我将把完整的解决方案和错误处理留给您作为练习。这有点棘手,超出了我们的问答格式的范围。