chan

朝生暮死不足笑 但悲百年不足道

记录一次构建Django镜像的错误之二


继解决错误之一后,服务虽然可以正常访问了,但是遇到了bootstrap文件无法找到的问题,访问如下图所示

排查了很久,半天的时间有了,最后找到问题处在nginx的静态地址配置上面

错误的地址配置如下:

location /static/ { 
alias /www/day16/app01/static; 
}

修改后,正确的配置如下:

location /static/ {
alias /www/day16/app01/static/; 
}

即,后面有无斜杠/

GPT给我的答复如下:

Nginx 配置解析
带斜杠的配置:
location /static/ {
alias /www/day16/app01/static/;
}
这里的 alias 末尾有斜杠,Nginx 会直接将请求路径中的 /static/ 处理为文件路径中的 /static/。所以,当你请求 /static/plugins/bootstrap-3.4.1/css/bootstrap.min.css 时,Nginx 会把这个请求映射到 /www/day16/app01/static/plugins/bootstrap-3.4.1/css/bootstrap.min.css,成功找到文件。

不带斜杠的配置:
location /static/ {
alias /www/day16/app01/static;
}
这里的 alias 没有斜杠。在这种情况下,Nginx 会去掉请求路径中的 /static/,然后将剩下的部分追加到 alias 指定的路径上。也就是说,请求 /static/plugins/bootstrap-3.4.1/css/bootstrap.min.css 会被映射到 /www/day16/app01/staticplugins/bootstrap-3.4.1/css/bootstrap.min.css,显然这样找不到文件,导致404错误。

但是他不带斜杠的配置,我认为存疑,因为我尝试在app01下配置他说的目录,但是访问仍然302

暂时不做深究了先。仅以此作为个记录。

以下是正确加载bootstrap的样子,如下图所示:

 

评论
还没有评论
    发表评论 说点什么