如果这是一个补救问题,请原谅我。
我正在为 Web 应用编写 API。我有一个用于本地配置的 config.json 文件,但目前如果您知道 URL,则可以直接通过 Web 浏览器调用它。
如果我将权限更改为 750,php/nginx 将无法访问它 - 导致 500 错误。将此文件放在未映射到 nginx Web 根目录下的目录结构的其他目录中也是不可行的。(config.json 的所有者目前是我的 linux 用户,但可能是 www-data - 不确定这是否重要)
有没有办法使用 Linux 所有者/组/权限来解决这个问题?
答案1
我的第一选择(因为将其移到站点根目录之外不是一个选项):
在 nginx 中定义位置块=
并拒绝访问。
location = /config.json {
deny all;
}
拒绝访问将确认文件的存在。如果您愿意,可以使用return 404;
而不是该deny all;
行,这样看起来文件就不存在了。
您应该能够让 php-fpm 用户拥有并可读取该文件,但 nginx 用户则不能。但是,我认为这太容易出错,因此风险太大。
否则:
这就是为什么许多 php 应用程序将其配置文件设为 php 文件的原因。如果浏览器请求它们,它们会组装一些配置数组并退出,不输出任何内容。检查配置文件中的某些全局变量并默默退出而不返回任何内容也很常见。