同一个域名,不同操作访问结果不同?能登录、能调用接口、却不能访图片

文章讲述了作者在测试服部署项目A时遇到的问题,Nginx无法访问以特定域名开头的图片,经排查发现是由于Nginx不认识Docker中的挂载路径。通过修改配置文件,将静态资源访问路径指向真实宿主机路径,解决了图片访问问题。
摘要由CSDN通过智能技术生成

场景:
我在测试服部署了一个项目,姑且命名它为A项目,域名是https://rcrc.testpage.com;在这同一个域名的情况下:

  • 管理后台的地址可以登录:https://rcrc.testpage.com/guanlihoutai/;
  • 此域名拼接的接口可以被第三方调用;
  • 但以这域名开头的图片(图片存在服务器中)却报错404不能被访问或打开:https://rcrc.testpage.com/static/UN/11/29/Gshfd.jpg;在这里插入图片描述

排查思路:

  1. 首先域名指向的服务器肯定没问题,也没有拦截黑名单等。因为管理后台可以被不同用户登录且接口可以被调用。
  2. 错误是哪里报的?仅仅是图片无法访问,那么考虑应该是访问静态文件这边出了问题

排查步骤:

  1. 查看报错日志
    日志是Nginx报的,如果不知道Nginx的错误日志在哪里,可在使用nginx -t 命令先进入其配置文件,找到配置文件中error_log的地址,然后再使用cat+日志地址 的命令查看日志内容。
    在这里插入图片描述

    错误内容显示如下图:找不到“/var/filepath/static/xxxxx…” 很明显,nginx并不认识这个图片地址,就是说,它在这个路径下根本没办法找到对到对应的图片。
    在这里插入图片描述那nginx是怎么拼出找到这个错误地址的呢?

  2. 首先弄清楚,nginx是以容器部署在Docker中还是直接部署在宿主机上?
    我是用Docker ps 命令并未发现以容器的运行的nginx,所以我的nginx是直接运行在了宿主机上
    那么接下来就要看,这个A项目里的配置文件怎么配的

  3. 查看该项目的nginx的配置文件
    找到该项目的配置文件A.conf;打开后发现静态文件的访问当前的配置是:
    在这里插入图片描述

    所以nginx直接用这个/var/filepath路径去拼接了/static/…图片路径,可是这其实是个挂载路径,我的nginx并不认识docker中的/var/filepath挂载目录。 这个目录的挂载关系在项目的docker-compose.yml中映射,如下:
    在这里插入图片描述
    经过查找,图片确实存在这个真实的宿主机路径下:/home/docker-compose/filepath,将该项目的A.conf文件的静态资源访问位置改成真实的宿主机路径:
    在这里插入图片描述
    这样一改,Nginx就会根据这个真实的宿主机路径去找到这个图片,这回就能访问图片成功了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值