nginx XSendFile和权限

我是一个Linux新手。 我有一个PHP脚本,基于几个参数的正确性,决定是否向用户提供文件。 我通过nginx中的XSendFilefunction来提供文件。 我想阻止直接访问文件,以便用户被迫通过PHP脚本下载。

我的问题是,如果我将文件权限设置为640,当我尝试直接下载时,我得到一个403 Forbidden,但我无法下载与脚本以及。 而如果我把它设置为644,我能够做到这两件事情(我认为需要添加执行权限,以便直接下载文件。我错了吗?)我应该如何设置权限,以实现我所需要的?

编辑:请注意,我无法移动Web根目录上的文件,因为有些文件必须有直接访问权限,而其他文件则不能。 所以我必须把它们放在同一个目录下,并且能够有select地启用/禁用直接下载。

Nginx有一个指示。 您可能会将某个位置标记为“内部”,这意味着Nginx仅会因为重写,X-Accel-Redirect等等而对其进行处理。 如果您尝试直接请求此位置,则会收到404“未find”响应。

location /downloads { internal; } location /scripts { # should issue X-Accel-Redirect: /downloads/file.ext }