可通过location匹配、auth_basic认证和alias路径映射实现静态目录访问隔离:为各目录单独配置location块,用alias精确映射(结尾带/),配合不同auth_basic_user_file文件实现多账号体系,并辅以文件系统权限与URI过滤(如拒绝“..”)强化安全。

可以通过 Nginx 的 location 匹配、auth_basic 认证和 alias / root 路径控制,结合文件系统权限,实现不同静态目录的访问隔离。
按路径划分独立目录并限制访问范围
避免用 root 指向父目录后靠 URI 拼接(易导致路径穿越),改用 alias 精确映射每个受控目录:
- 为每个需隔离的静态资源目录单独配置
location块 - 使用
alias /var/www/secured/(结尾带斜杠)匹配location /files/,确保请求/files/doc.pdf实际读取/var/www/secured/doc.pdf - 禁用
autoindex on,除非明确需要目录列表;若启用,配合auth_basic防止未授权浏览
启用基础认证隔离不同用户组
对敏感目录添加用户名密码校验,支持多目录不同账号体系:
- 生成用户密码文件:
htpasswd -c /etc/nginx/.htpasswd-admin admin(首次创建),后续添加用htpasswd /etc/nginx/.htpasswd-admin dev - 在对应
location中加入:auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/.htpasswd-admin; - 多个目录可共用一个密码文件,也可为每个目录指定不同文件(如
.htpasswd-public、.htpasswd-internal)
利用文件系统权限辅助强化隔离
Nginx 工作进程以特定用户(如 www-data 或 nginx)运行,可借助系统权限缩小攻击面:
- 将各静态目录归属不同系统用户/组,例如:
chown nginx:admin-group /var/www/internal/chmod 750 /var/www/internal/ - 确保 Nginx 主配置中
user指令与目录属主兼容(如user nginx;) - 不依赖认证的目录,可通过
deny all;+allowIP 白名单进一步收紧(适合内网接口文档等场景)
防止常见越权访问(如路径遍历)
即使配置了 alias,仍需防范恶意 URI 构造:
- 在
location块中显式拒绝含..的请求:if ($request_uri ~ "\.\.") { return 403; } - 避免在
location中使用正则捕获后拼接路径(如alias /data/$1/;),易引发变量污染 - 静态文件目录不要放在 Web 根目录下(如
/var/www/html/private/),应置于独立路径(如/var/www/private/),并通过alias显式暴露


















