nginx:拒绝目录中的所有文件

时间:2015-07-02 19:00:54

标签: security nginx download server

我有一个“上传”目录,用户可以上传机密文件(jpg,png,pdf)。每个用户都被分配了一个内部文件夹,例如:/ 001 /,/ 002 /,...,/ 999 /等。

我希望这些文件只能通过SFTP访问,因此网址http://example.com/upload/259/image.jpg应该返回403错误消息。

我尝试了很多变体,但仍然可以通过网址访问这些文件。

location ~ /upload/\.(jpe?g|png|gif|ico)$ {
    deny all;
    return 403;
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您仍然需要匹配该部分:' / 259 / image'

这应该有效:

location ~ /upload/.*\.(jpe?g|png|gif|ico)$ {
   deny all;
   return 403;
}

答案 1 :(得分:1)

如果通过sftp访问/上传,那么这就是您应该需要的:

location ^~ /download/ {return 403;}

通过使用^〜跳过正则表达式循环,您将提高性能。此外,通过不使用正则表达式位置,您的配置可以缩小问题。前缀位置可以在任何地方,但不是正则表达式位置。将使用第一个正则表达式匹配,这可能导致混乱。