使用nginx获取Django的静态文件

mspsb9vt  于 2023-05-06  发布在  Nginx
关注(0)|答案(1)|浏览(211)

我试图在django中获取静态文件,当使用nginx反向代理时,在ec2容器中dockerized
我有一个django项目,当它与nginx作为代理服务器对接时,我找不到我的静态文件
我的nginx服务器的default-ssl.conf.tpl

location /static{
    alias /vol/static;
  }

我的nginx的dockerfile说要为vol/static创建一个卷

VOLUME /vol/static
VOLUME /vol/www

所以我用docker cp手动把我的文件放在那里,然后用exec检查,以确保它们在那里我的文件现在在我的代理容器上的vol/static中。所以我认为他们应该得到妥善处理,现在我仍然得到

GET https://tgmjack.com/static/health_hud.png 404 (Not Found)

:(
我做错了什么?还有什么有用的信息
我的完整代码在这里,以防可能会揭示我做错了什么https://github.com/tgmjack/god_help_me
额外信息
我在一个ec2容器上部署,我可以用https连接到我的自定义域,除了文件找不到之外,一切似乎都很好

aiazj4mn

aiazj4mn1#

我检查了你的github-repo。
第一:您不想自己组织静态文件夹。Django提供了一个非常好的方便方法:python manage.py collectstatic .
您需要设置的唯一内容是:

  • www.example.com中的STATIC_URLsettings.py-您已完成
  • STATIC_ROOT在settings.py-你还没有做(信息)
  • 然后把你所有的静态文件放在像这样组织的文件夹中
app/
- static/ --> here general static files that get used by all apps
- app/
- home/
-- static/ --> here specific static files that get used by home-app specifically
  • 然后运行python manage.py collectstatic(info)

你想这样做是因为:

  • Django会在之后找到你的静态文件
  • 它处理权限
  • 它还为管理页面和所有其他应用程序设置静态文件。

相关问题