- 背景:
- 使用Minio存储图片和视频。
- 前端回显使用minio自带链接还要配置如子域名直接访问它的根路径查询,因为涉及到它的s3 api 加密问题。
- 解决方案:
解决方案
- 使用代理的方式。访问程序端口获取数据流。但要注意,接口要是get请求才可以 这种方式除了在web端,还有在移动端 我都在用。
@GetMapping("/proxy")
public void proxyFile(@RequestParam("bucket") String bucket,@RequestParam("object") String object,javax.servlet.http.HttpServletRequest request,javax.servlet.http.HttpServletResponse response) {try {String decodedObject = URLDecoder.decode(object, StandardCharsets.UTF_8.name());iSysOssService.proxyFile(bucket, decodedObject, request, response);} catch (Exception e) {iSysOssService.proxyFile(bucket, object, request, response);}
}
- 拓展。除了此方式。
- 使用子集域名,不会跨域。若要使用子级域名直接访问minio存储文件也是可以。
- 本机测试,host地址不通可以访问。我通过在本机测试web端程序时进行了测试,配置的后端使用了域名,但访问minio的图片链接是ip:port的方式,这当然不影响,因为本地测试经过了代理的方式。
- minio官网提供的ngnix配置方案。nginx服务器反向代理minio配置
- 总结。目前暂使用自定义接口反向代理minio回显图片和视频内容