我在Ubuntu Server 9.04上运行Django。
Django运作良好,但nginx不会传回静态文件-总是404。
这是配置:
server {
listen 80;
server_name localhost;
#site_media - folder in uri for static files
location /static {
root /home/user/www/oil/oil_database/static_files;
autoindex on;
}
#location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
# root /home/user/www/oil/oil_database/static_files;
# access_log off;
# expires 30d;
#}
location / {
root html;
index index.html index.htm;
# host and port to fastcgi server
#fastcgi_pass 127.0.0.1:8080;
fastcgi_pass unix:/home/user/www/oil/oil_database/oil.sock;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
access_log /var/log/nginx/localhost.access_log;
error_log /var/log/nginx/localhost.error_log;
}
Nginx版本是0.6.35。
所有目录均已存在并设置为777(调试妄想症)。当我取消注释时,注释掉的块没有帮助。
最佳答案
目录设置如何?您在static
中有一个文件夹/home/user/www/oil/oil_database/static_files
吗?在这种情况下,伪指令应如下所示(请注意/static/
中的斜杠):
location /static/ {
autoindex on;
root /home/user/www/oil/oil_database/static_files;
}
如果要将路径
/home/user/www/oil/oil_database/static_files
映射到URL /static/
,则必须static_files
重命名为static
并使用以下指令:location /static/ {
autoindex on;
root /home/user/www/oil/oil_database/;
}
location /static/ {
autoindex on;
alias /home/user/www/oil/oil_database/static_files/;
}
请参阅有关
root
和 alias
指令的文档。
关于django - Nginx不提供静态服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474374/