【发布时间】:2018-12-31 21:05:51
【问题描述】:
不知道为什么,但是在收集新的静态文件(collectstatic)后,nginx 抛出 403 错误。
新文件与旧静态文件具有不同的权限。
-rw-rw-r-- 1 django django 115206 Jul 9 15:23 dom.jpg
-rw-r----- 1 django django 884 Jul 23 20:42 error.svg
-rw-rw-r-- 1 django django 308934 Mar 11 16:30 header.bmp
-rw-rw-r-- 1 django django 20188 Mar 11 16:30 header.jpg
-rw-r----- 1 django django 910 Jul 23 20:42 success.svg
-rw-rw-r-- 1 django django 1826 Jul 9 15:23 user.svg
如您所见 - error.svg 和 success.svg 具有不同的权限,这就是 nginx 抛出 403 的原因。
你知道如何解决这个问题吗?我不想只更改现有文件的权限,我想要通用解决方案,这样就不会再发生这种情况了。
顶部
返回这个:
9143 django 20 0 59124 6580 4904 S 0.0 1.3 0:07.44 gunicorn
9149 django 20 0 213640 67600 8692 S 0.0 13.5 0:07.91 gunicorn
9150 django 20 0 215224 68680 8520 S 0.0 13.7 0:08.95 gunicorn
9151 django 20 0 215056 68420 8512 S 0.0 13.7 0:09.32 gunicorn
32386 root 20 0 126132 1168 684 S 0.0 0.2 0:00.00 nginx
32387 www-data 20 0 127076 4580 3308 S 0.0 0.9 0:03.43 nginx
【问题讨论】:
-
您是否使用
django用户运行您的网络服务器? -
你能让你的服务器运行命令
whoami并将其打印到日志文件(或类似的东西)。我认为服务器 not 以django运行。 -
@WillemVanOnsem 我不确定哪个服务器 - nginx 或 gunicorn,我在问题底部添加了 top 命令的结果。
-
那么顶部
nginx是-如果我没记错的话-您调用的那个将获得端口(因为1024以下的端口需要root 访问权限),但随后它将控制权传递给孩子与另一个用户一起跑步,以降低风险。如果将www-data添加到django组会怎样? -
例如
sudo usermod -a -G django www-data
标签: python django ubuntu nginx django-staticfiles