【问题标题】:Nginx static files 404 with django swagger rest apiNginx 静态文件 404 与 django swagger rest api
【发布时间】:2021-08-12 17:03:13
【问题描述】:

我有 Django rest API 应用程序,并且为此在本地运行良好。我正在尝试使用容器对其进行配置并将其部署在 ECS 上。

现在,当我构建并运行容器时,应用程序工作正常(我的意思是出现了招摇的 UI)。当我将应用程序负载平衡器附加到它时,在浏览器上它给了我 404 找不到 js 和 CSS 文件的文件。

这是来自网络浏览器的控制台输出。

这是我的 Nginx 配置文件

# nginx.default
add_header X-Content-Type-Options nosniff;
include /etc/nginx/mime.types;
add_header X-XSS-Protection "1; mode=block";

server {
    listen 8020;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    
    location / {
        proxy_pass http://127.0.0.1:8010;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /static {
        root /home/app/codebase;
    }
}

docker容器内的静态文件夹路径为/home/app/codebase/static/

还在 Django Settings.py 文件中添加了以下行。

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

不知道我错过了什么。任何线索将不胜感激。 我研究了这些questions。问题是类似的,但不确定我错过了什么。

【问题讨论】:

    标签: django amazon-web-services nginx django-rest-framework amazon-ecs


    【解决方案1】:

    发布解决方案,以防仍有人面临同样的问题。 我使用 IaC (Cloud Formation) 配置了所有资源,因此在配置负载均衡器时,我创建了一个目标组,但当时没有创建 ECS 服务,所以我创建了一个虚拟目标组,它丢弃流量并且没有路由流量到任何服务。 在 ALB 的基于路径的路由中,最后一条路由(当请求未找到任何路由时,流量使用该路由)将流量定向到虚拟目标组。 一旦我改变了目标群体,一切都会像魅力一样发挥作用。

    工作正常

    专业提示: 始终在最后一个 ALB 规则中使用应用程序中的任何目标组。

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 2017-06-05
      • 2021-01-12
      • 2016-09-24
      • 2015-11-30
      • 2021-08-08
      • 2012-09-30
      • 2020-10-17
      • 1970-01-01
      相关资源
      最近更新 更多