Django静态文件和nginx

当我通过nginx在example.org(不是真正的ip)加载服务器时,内容显示正常。 但是,静态文件如css和js不显示。 什么需要改变的静态文件显示? 我只是在nginx上执行python manage.py runserver来检查文件是否被提交,但是只有模板才显示出来而没有静态文件。

实际的静态文件夹(css / js / img)在

/opt/myenv/myproject/myproject/static 

我有/ etc / nginx / sites-available / myproject as

 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') 

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

另外,你可以使用alias ,而root会更有效率 。 尝试:

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

你使用命令收集了静态文件吗?

 python manage.py collectstatic 

我也认为你为静态文件夹定义的路径存在错误,不应该是:

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

代替:

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