我是Nginx的新手,我已成功将我的django项目绑定到Nginx。但是我不能提供我的静态文件,我想我错误地设置了我的媒体文件夹的位置。这是我的文件树:
root_directory
my_django_project
...
manage.py
app1
app2
media
admin
css
js
...
我的nginx.conf就像:
server {
listen 192.168.1.9:80;
server_name localhost;
# site_media - folder in uri for static files
location /media/ {
root /home/nazmi/workspace/portal/media/;
}
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) {
access_log off; # po co mi logi obrazków :)
expires 30d;
}
location / {
# host and port to fastcgi server
fastcgi_pass 127.0.0.1:8080;
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 main;
error_log /var/log/nginx/localhost.error_log;
}
}
当我打开管理页面时,所有css页面都会出现404错误。你能告诉我怎样才能正确设置我的媒体路径?
答案 0 :(得分:45)
以下是我如何设置nginx服务器的示例
server {
server_name example.com www.example.com;
location /static {
autoindex on;
alias /home/myusername/myproject/static/;
}
location /media {
autoindex on;
alias /home/myusername/myproject/media/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
我在本地端口8000上向Gunicorn提供django。(这就是proxy_pass的用途)
Nginx维基example configuration也可能对您有所帮助。请注意,在他们的静态文件服务中,他们指定允许的文件类型并使用“root”而不是“alias”,但它们是相似的。
这个ServerFault问题可能有所帮助。
答案 1 :(得分:0)
以下代码对我有用:
server {
server_name example.com www.example.com;
location /static {
autoindex on;
**alias /home/myusername/myproject/;**
}
location /media {
autoindex on;
**alias /home/myusername/myproject/;**
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
我根据上一个答案加粗了不同部分。
答案 2 :(得分:0)
如果媒体文件未提供服务,请尝试在启用站点的目录内的 conf 文件中设置媒体位置,如下所示。这对我有用。
tmp <- lapply(list, as.data.frame)
do.call(rbind, Map(cbind, Name = names(tmp), tmp))