当我通过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/; }
?