Nginx权限配置核心是按目录层级与用途统一划分边界,分离控制权与执行权:/etc/nginx由root完全控制(755/644),/srv/www和/opt/apps属主分设为root:www-data与deploy:www-data(755/644),worker仅以nginx-prod等专用用户读取,日志与缓存目录严格限定属主及0755/0644/0700权限。

所有者配置不是按“文件”逐个设,而是按目录层级和用途统一划分权限边界,核心是分离控制权与执行权,避免混用 root 或过度放权。
根级目录 /etc/nginx 的所有权
整个 Nginx 配置树的起点,必须由 root 完全控制:
-
/etc/nginx 及其子目录(如 conf.d、sites-enabled)属主为
root:root,权限0755 - 所有
.conf文件(包括 nginx.conf、paths.conf、upstreams.conf)均属root:root,权限0644 - 禁止普通运维用户直接写入 conf.d;增删配置通过受控部署流程(如 Ansible 模板 + sudo 权限)完成
运行时资源目录 /srv/www 和 /opt/apps 的所有权
这是实际服务内容所在,需兼顾安全性与可部署性:
-
/srv/www/{project_name} 属主为
root:www-data,权限0755(目录可读可执行,不可写) - /srv/www/{project_name}/public 是符号链接,本身不设属主,但指向的目标(即 /opt/apps/.../public)需可被 Nginx worker 进程读取
-
/opt/apps/{project_name}/current 属主为部署用户(如 deploy),组为
www-data,权限0755;构建产物目录(如 public)权限0755,静态文件(.html/.js/.css)权限0644
Nginx worker 进程对应用户与目录访问权限
worker 不需要写权限,只读即可,但必须能遍历路径并打开文件:
- 开发环境用
nginx-dev用户,生产环境用nginx-prod用户,二者均加入www-data组 -
/srv/www和/opt/apps下所有 public 目录及其父路径,对www-data组保持r-x(即组权限含 5) - 禁止将 Nginx worker 用户设为 root 或赋予 sudo 权限;也不应让其拥有 /opt/apps 的写权限——部署由独立用户完成,worker 只负责读取
日志与临时目录的所有者
日志生成和缓存行为需明确归属,防止权限冲突或写入失败:
-
/var/log/nginx 属主为
root:adm或root:www-data,权限0755;日志文件(access.log/error.log)属主为nginx-prod:adm,权限0644 -
/var/cache/nginx 属主为
nginx-prod:www-data,权限0700(仅限 worker 用户读写) - 若使用自定义缓存路径(如 /srv/cache/myapp),同样设为
nginx-prod:www-data,权限0700


















