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

CentOS下Nginx+Uwsgi+Django架构open() 13权限拒绝错误如何解决?

问题解决方案

你遇到的Nginx报13: Permission denied错误,在已经确认文件系统权限配置正确的前提下,核心原因是CentOS默认开启的SELinux强制访问控制策略限制了Nginx对/var/www/download目录的访问权限,可按以下步骤排查修复:

第一步:验证SELinux是否为问题根源

  • 执行命令临时关闭SELinux:
setenforce 0
  • 重新测试文件下载功能,如果此时下载正常,即可确认问题由SELinux规则导致,无需关闭SELinux,配置正确的安全规则即可。

第二步:配置SELinux访问规则(推荐,无需关闭SELinux)

  1. 若系统未安装semanage工具,先执行安装:
  • CentOS 7 执行:yum install -y policycoreutils-python
  • CentOS 8/9 执行:yum install -y policycoreutils-python-utils
  1. 给/var/www/download目录及其子内容配置Nginx可访问的SELinux上下文:
semanage fcontext -a -t httpd_sys_content_t "/var/www/download(/.*)?"
  1. 执行命令让规则生效:
restorecon -Rv /var/www/download
  1. 验证规则配置是否生效:执行ls -Z /var/www/download,输出结果中如包含httpd_sys_content_t标签即为配置成功。

可选:额外排查项

如果配置完成后仍有报错,可检查以下两项:

  • 测试nginx用户对目录的实际访问能力:执行sudo -u nginx ls /var/www/download/example.txt,如果能正常输出文件名,说明路径权限无问题,否则需检查/var、/var/www等父级目录是否给nginx用户开放了执行(x)权限(目录的x权限是进入目录的必要条件)
  • 优化Nginx location匹配规则,避免路径拼接错误,可将原/download-nginx的location配置修改为:
location ^~ /download-nginx/ {
    internal;
    alias /var/www/download/;
    sendfile on;
    proxy_max_temp_file_size 0;
}

修改后重启Nginx生效。

安全优化建议

测试功能正常后,建议取消777这类过高权限,配置更安全的权限规则:

chown -R nginx:nginx /var/www/download
chmod -R 755 /var/www/download
find /var/www/download -type f -exec chmod 644 {} \;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:06:03