我有一个/ upload /目录,用户可以上传机密文件。例如:example.com/upload/username/myfile.jpg
我希望这些文件只能由将其上传到自己目录中的人员访问。
在我的Nginx服务器配置中,我首先将包含“upload”的所有位置重定向到PHP文件:
location ^~ /upload/ {
rewrite ^(.*)$ /dl-file.php?$1 break;
}
所以http://example.com/upload/username/myfile.jpg现在提供dl-file.php。
// Get the url
$url = 'https://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
// Function to download the file with the url
download_remote_file_with_curl($url, realpath("./downloads"));
脚本尝试下载与网址http://example.com/upload/username/myfile.jpg关联的文件。但随后Nginx再次将请求重定向到dl-file.php。
所以我最终下载'dl-file.php'而不是'myfile.jpg'。如何在第一次使用Nginx重定向文件请求,然后使用PHP启用下载?
(如果我的工作无效,我会采取不同的方法)
答案 0 :(得分:0)
如果您使用的是php,则可以使用try_files
直接提供脚本,然后执行$my_args = explode('/', $_SERVER['REQUEST_URI']);
之类的操作。
location ^~ /upload/ {
try_files /dl-file.php =404;
include php_fastcgi.conf; # <- php stuff here
}