django - 通过 AWS Application Load Balancer 提供 Django 内容
问题描述
我正在一个 ec2 实例上构建一个 django Web 应用程序,该实例位于一个自动缩放组中,并带有一个应用程序负载均衡器。
我已经配置了 uwsgi 和 nginx,当我运行命令时
uwsgi --socket /tmp/uwsgi.sock --module MyProject.wsgi --chmod-socket=666 --virtualenv /path/to/my/virtual/env/
当我通过 IP 地址访问应用程序时,一切正常。我可以导航到该站点,并且一切正常。
但是,当我尝试使用我拥有并通过 Route 53 注册的域名通过 URL 访问该网站时,该网站的功能正常工作并且正在提供服务,但静态内容(css 文件等)没有呈现。
我的 Auto-Scaling 组说实例运行状况良好。目标群体说目标是健康的。ALB 正在侦听端口 80 和 443 并将流量转发到目标组。
有谁知道为什么静态内容在通过注册域名时没有呈现,即使它在直接通过公共 IP 地址访问它时有效?
解决方案
听起来您的静态内容 url 没有解析到您的域。您应该检查模板上给出的 url 是否符合预期,然后确保正确设置 nginx 以提供来自该位置的内容。
server {
root /www/data;
location /static/ { # serve files from /www/data/static/ to /static/
}
}
https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/
您可能还希望参考 django 静态文件文档,也许您需要确保您的设置正确以映射到正确的 url。
https://docs.djangoproject.com/en/2.1/howto/static-files/deployment/
我建议将您的实例配置为从 s3 提供静态内容,因为如果您有多个需要同步其静态/媒体文件的服务器实例,这将更有意义。
推荐阅读
- image - Rust:使用 image-rs 将 JPEG 图像编码为 PNG
- javascript - SuiteScript2.0 请加值到金额
- javascript - 如何访问在javascript中添加到另一个数组元素的数组元素
- typescript - typescript eslint - 类型 x 缺少类型 x 的以下属性
- youtube-api - 我想延长 YouTube Data API 的配额。有没有办法计算成本?
- c++ - 为什么 char 可以在 std::array 中初始化为 nullptr,但不能单独初始化?
- python - 如何计算运行特定 Python 程序需要多少 CPU、RAM、能量?
- mongodb - 在 kubernetes 上添加 mongoDB statefulset 成员问题
- javascript - ESLint 抱怨从未使用过局部状态变量 no-unused-vars
- django - django 邮件中的图片不显示