1.http://localhost/admin被定向到http://localhost/,导致Page not Found(404)错误。
nginx.conf没有配置好,默认的nginx的fastcgi_param中的如下项需要修改
# fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
Django使用的是PATH_INFO,而不是SCRIPT_NAME
2.media下的css,js,image等无法显示的问题
1)把django,admin下的media拷贝出来
cp -r /usr/lib/python2.5/site-packages/django/contrib/admin/media/ /home/my/project/media/
media在Django的安装目录下也有就在/Django-1.0.2-final/django/contrib/admin/media/下
2)修改nginx的配置文件
location ~/media/ {
root /home/my/project/;
break;
}
就可以了,另外,其他静态的文件,都可以通过这个方式来指定路径,因为Django是不处理静态文件的。
3)Django的URL错误
如果还是没有,则需要看nginx的访问日志和错误日志,在logs/access.log和logs/error.log
如下,Access.log中的,证明get的链接不对,应该是/media/css/login.css
127.0.0.1 - - [11/Mar/2009:21:57:08 +0800] "GET /admin/css/login.css HTTP/1.1" 302 5 "http://localhost:8080/admin/" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)"
修改setting.py文件,设置如下
ADMIN_MEDIA_PREFIX = '/media/'
如果设为空则请求的URL为:/admin/css/login.css,看http:/的源码如下
如果设为/media/则URL为:/media/css/login.css,源码如下
4)nginx的映射错误,导致找不到css等文件
另外一个错误是找不到文件,可以查看error.log文件
2009/03/10 23:01:25 [error] 2368#0: *13 open() "/cygdrive/c/nginx/c:/django/project/media/media/css/dashboard.css" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /media/css/dashboard.css HTTP/1.1", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/admin/"
则需要看看你的nginx的如下配置是否正确
location ~/media/ {
root /home/my/project/;
break;
}
这个配置,假如你访问的URL是:http://localhost/media/css/login.css,则映射到/home/my/project/media/css/login.css上。
在windows下路径应该是设置为root /cygdrive/c/path;而不是root c:/path;
我在window xp和ubuntu8.04上都成功配置了,nginx和django的组合还是比较方便的。