Skip to main content
 首页 » 编程设计

python之Django静态文件和nginx

2024年08月23日37lvdongjie

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

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

/opt/myenv/myproject/myproject/static 

我有/etc/nginx/sites-available/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') 

请您参考如下方法:

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

此外,您使用 alias,其中 root 为 more efficient .尝试:

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