You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用根目录及指定文件的下载权限?基于Plesk Obsidian的Nginx配置问题排查

解决Plesk Obsidian中禁用敏感文件下载权限的问题

我之前也踩过类似的坑——在Plesk里加了Nginx指令却没生效,核心问题出在规则的匹配范围和优先级上。下面给你一步步搞定:

问题分析

你原来写的location /.env { deny all; }只能匹配根目录下的.env文件,子目录里的完全不会被拦截;另外,Nginx的规则匹配顺序可能让你的规则被Plesk默认的静态文件处理规则覆盖,导致没生效。

正确的解决方案

1. 编写覆盖所有目录的Nginx规则

要拦截根目录及所有子目录的敏感文件,得用正则匹配的location规则,同时覆盖所有你想禁止的文件类型。

把你现有的指令替换成下面的内容(可以按需添加更多敏感文件名):

passenger_enabled on;
passenger_app_type wsgi;
passenger_startup_file passenger_wsgi.py;

# 拦截所有目录下的敏感文件,返回403禁止访问
location ~* /(\.env|settings\.py|\.gitignore|\.htaccess) {
    deny all;
    return 403;
}

规则说明

  • ~*:启用不区分大小写的正则匹配,确保像.Env或Settings.PY这类变体也会被拦截
  • /(\.env|settings\.py|...):括号里是你要禁止的文件名,注意用\转义.(因为正则里.是通配符),用|分隔多个文件
  • deny all;:拒绝所有来源的访问请求
  • return 403;:明确返回403 Forbidden状态码,避免返回默认的模糊错误页面

2. 生效配置并测试

  • 在Plesk的“Apache & nginx Settings”页面点击Apply保存配置
  • 重启Nginx(可以在Plesk的Tools & Settings > Services Management找到Nginx,点击Restart)
  • 用浏览器隐私模式(或清空缓存)测试访问https://example.com/.env和https://example.com/projectfolder/settings.py,正常应该返回403页面

额外排查点

如果还是没生效,检查这两个地方:

  • 有没有在Plesk的“Apache directives”里添加了冲突的规则?比如允许访问这些文件的规则
  • 确认你的域名在Plesk里是用Nginx作为反向代理(默认是),没有强制用Apache处理所有请求

内容的提问来源于stack exchange,提问作者Syahmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 04:12:49