OSS返回图片路径实现浏览器访问预览——nginx转发

目录

前言:

解决方案:

具体实现:


前言:

        因为项目使用了oss对象存储,在实现微信公众号模板通知的时候需要点击跳转现在oss返回的路径(图片),发现打不开 赋值成其他网络图片后即可正常跳转显示。一番查找后得到以下结论:

  1. oss返回的图片地址浏览器访问提示下载并非直接预览。
  2. 官方说明:访问您的图片文件,无法预览,直接下载,是由于从2019年9月23日起,针对之后新建的Bucket,直接使用OSS提供的默认域名,从互联网访问OSS上该Bucket的图片类型文件时,mimetype为以下值,ResponseHeader中会自动加上Content-Disposition:'attachment=filename;'。即从浏览器访问图片类型文件时,会以附件形式进行下载,如果您要直接在浏览器中预览文件而非下载文件,请设置文件HTTP头中的Content-Disposition为inline并使用Bucket绑定的自定义域名进行访问

        意思大概是因为oss返回的图片地址浏览器不能直接预览导致了微信公众号消息模板跳转失败,解决思路就是让访问图片的路径支持浏览器预览即可。

解决方案:

1.按照阿里云官方的说法去配置oss绑定自定义域名后就可以实现预览效果,但是经过尝试之后并未实现还是访问就下载(可能是我漏了哪些配置),此处把官网提供的解决预览方式附上:配置访问OSS文件时是预览行为_对象存储(OSS)-阿里云帮助中心 (aliyun.com)

2.另外我能想到的是通过nginx转发访问oss文件做到内网访问转发oss文件,此方法还有一个好处就是通过内网访问会省去外网访问产生的流量费用。

具体实现:

在nginx里添加配置转发信息:

server{
   	listen      80 ;
   	server_name 访问的域名;
   
		location ^~ /oss/ {
        #(bucket域名查看:进入bucket详情-概述-页面右下角)
		proxy_pass http://内网Bucket域名/;
        #例如:proxy_pass http://abcd.oss-cn-beijing-internal.aliyuncs.com/;
		proxy_set_header Host Bucket域名;
        #例如:proxy_set_header Host abcd.oss-cn-beijing-internal.aliyuncs.com;
		proxy_hide_header Content-Disposition;
		}
	}

例如之前的访问图片路径是:http://abcd.oss-cn-beijing.aliyuncs.com/aabb.jpg

配置好之后访问:http://访问的域名:80/oss/aabb.jpg 即可实现浏览器直接预览

附:不必害怕踩坑  踩坑是成长的脚步

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值