django服务器无法加载静态文件,但可以通过URL直接访问它们。
我有一个django服务器,由gunicorn在docker容器中提供服务。
My Django static sttings.py:
STATICFILES_DIRS = [
(os.path.join(BASE_DIR, "static")),
]
STATIC_URL = "/static/"
STATIC_ROOT = os.path.abspath(os.path.join(BASE_DIR, "../static"))
我的Nginx配置:
http {
sendfile on;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://gunicorn:8000;
}
location /static/ {
autoindex on;
alias /static/;
}
}
}
我的nginx docker-compose配置:
nginx:
image: nginx:1.19.6-alpine
depends_on:
- gunicorn
ports:
- "80:80"
expose:
- "80"
- "443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./certs:/etc/nginx/certs
- nginx_static:/static
当我在调试模式下启动django服务器时,文件在localhost:8000加载,gunicorn容器在那里,但它们在localhost:80不可用,我的nginx容器在那里。
当我在调试关闭状态下启动它时,根本不会加载静态文件。
当我试图通过nginx访问静态文件时,例如。localhost:80/static/my_static.css
文件加载
我想这可能是我的django设置的问题,因为在html模板中调用静态,比如:{% static 'img/logo.png' %}
将加载该图像,但没有我的其他css文件将加载,即使{% load static %}
是在每个模板
任何帮助都非常感谢
1条答案
按热度按时间xuo3flqw1#
原来nginx是作为一个文本文件而不是css文件来提供我的css的。修复了包含MIME类型
include /etc/nginx/mime.types;
: