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

nginx: Deny all files inside directory

我有一个 "upload" 目录,用户可以在其中上传机密文件(jpg、png、pdf)。每个用户都会在上传中分配一个文件夹,例如:/001/、/002/、...、/999/ 等

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

我尝试了很多变体,但仍然可以通过 url.

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

有什么想法吗?

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

这应该有效:

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

如果通过 sftp 只能 访问 /upload,那么这就是您所需要的:

location ^~ /download/ {return 403;}

通过使用 ^~ 跳过正则表达式循环,您将提高性能。此外,通过不使用正则表达式位置,您的配置将以更少的问题进行扩展。前缀位置可以去任何地方,但不是正则表达式位置。将使用第一个正则表达式匹配,这可能会导致混淆。