在Debian上使用Django + FastCGI通过Nginx服务静态文件
我对django 1.3中静态文件服务的新方式有点生疏,但我相信问题不在django上。
我正在尝试在一个安装了debian的云服务器上运行一个django应用,使用的是nginx和fastcgi。现在我们只有一台服务器(在开发阶段),以后会考虑使用负载均衡器来简化多个服务器的管理,但我现在遇到了让nginx提供静态文件的问题。
我已经按照各种教程设置了nginx.conf来提供这些文件。
server {
listen 80;
server_name 127.0.0.1;
location /static {
autoindex on;
root /static;
}
}
上面是nginx.conf的一部分。无论我把root设置成什么,nginx在尝试访问http://127.0.0.1/static/
时总是返回404未找到的错误。
文件结构如下:
/home/user/site/project
/home/user/site/static
/home/user/site/templates
Django的settings.py中将STATIC_ROOT和STATIC_URL设置成了以下内容:
STATIC_ROOT = "/home/user/site/static/"
STATIC_URL = "http://127.0.0.1/static/"
如果有人能告诉我该怎么处理这个问题,那就太好了。
4 个回答
3
root /static
这不应该是 /home/user/site/static
吗?
1
根据上面Jim的回答,问题已经解决了。
root /static
现在已经改成:
root /home/user/site/static
不过在查看日志时,发现nginx试图找到的路径是 http://127.0.0.1/static,但实际路径是 /home/user/site/static/static/,这显然是错误的。
我不确定这是不是正确的方法,但现在我把所有静态文件都指向根目录(这样就不需要在网址中加/static了)。所以对于/static/images,我现在直接指向 http://127.0.0.1/images/。