Nginx关键目录权限需遵循最小权限原则:/etc/nginx/ 配置目录文件644、目录755;/var/run/nginx.pid目录需nginx用户写入,权限755;/var/log/nginx/日志目录750、文件640;静态资源目录755/644,严禁nginx写入。
Nginx 默认目录结构中,并非所有目录都需要高权限,相反,安全原则是“最小权限”:只给必要目录赋予最低限度的读、写或执行权限,避免因权限过高引发风险(如配置被篡改、日志被覆盖、静态资源被恶意写入等)。
真正需要谨慎配置权限的,是以下几类关键目录,它们涉及运行控制、日志记录和配置管理:
nginx.conf、conf.d/、sites-available/ 等.conf)应设为 644(属主可读写,组和其他用户仅可读)755(属主可读写执行,组和其他用户可读执行)777 或让 nginx 用户拥有写权限(防止运行时被注入恶意配置)conf.d/*.conf 模式,确保新增配置文件也遵循相同权限规范pid 文件由主进程创建并持续更新,用于进程通信与管理(如 nginx -s reload)pid 文件本身建议 644(属主读写,组和其他用户只读)/var/run/nginx/)需确保 nginx 主进程用户(如 nginx 或 www-data)有写入权限
chown nginx:nginx /var/run/nginx && chmod 755 /var/run/nginx
access.log、error.log 等,Nginx 工作进程会持续追加写入750 或 755,但更推荐 750(限制非属组用户访问)640(属主读写,属组读,其他用户无权限)nginx:nginx),防止日志被未授权读取或清空755,文件设为 644
nginx 用户写权限(除非业务明确需要上传功能,且已做严格校验与隔离)/upload/)单独挂载、限制 MIME 类型、禁用脚本执行(配合 location ~ .php$ { deny all; })/usr/lib/nginx/modules/(动态模块目录):模块 .so 文件需 644,目录 755,确保 nginx 用户可读但不可写/tmp/ 或临时缓存路径(如 proxy_cache_path):若启用缓存,该路径需 nginx 用户可读写,建议独立挂载并设为 700 或 750,避免与其他服务混用权限配置不是一劳永逸。每次修改后,建议用 nginx -t 验证配置,再用 ls -l 检查关键路径的实际权限是否符合预期。不复杂但容易忽略。