2015-12-07 172 views
2

当我通过nginx在example.org(而不是实际的IP)加载服务器时,内容显示正常。 但是,静态文件(如css和js)不显示。需要更改 以显示静态文件?我只是在nginx上执行python manage.py runserver来检查是否正在提供文件,但只有模板才会显示没有静态文件。Django静态文件和nginx

实际的静态文件夹(CSS/JS/IMG)是

/opt/myenv/myproject/myproject/static 

我已经在/ etc/nginx的/网站可用/ myproject的作为

server { 
    listen 80; 
    server_name example.org; ##not actual ip 
    access_log /var/log/nginx/example.log; 

    location /static/ { 
     alias /opt/myenv/static/; 
    } 

    location/{ 
     proxy_pass http://127.0.0.1:8000; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    } 
} 

这是我对/opt/myenv/myproject/mysite/settings.py。

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

回答

2

在您的问题中,您声明您的静态资源文件位于/opt/myenv/myproject/myproject/static,但您的nginx配置文件将它们放置在/opt/myenv/static

此外,您使用alias其中rootmore efficient。试试:

location /static { 
    root /opt/myenv/myproject/myproject; 
} 
1

你有没有收集使用命令?:

python manage.py collectstatic 

我还认为有你的静态的文件夹定义的路径错误的静态文件,应该不会是:

location /static/ { 
    alias /opt/myenv/myproject/static/; 
} 

相反的:

location /static/ { 
    alias /opt/myenv/static/; 
}