小程序的安全域名中禁用了阿里云OSS二级域名解决方案记录

最近在忙公司的项目,公司现在重新做自己产品,所以我现在前端后台各种换着做,所以产品也奔着小程序走了。

但是坑爹的是,我在做上存文件时候发现,我填OSS的域名的时候,小程序竟然警告我这是非法的域名,然后想想暗战中那两家,就明白把阿里的域名填进去是不可能的,不过我还是庆幸没有把阿里的IP网段全封了,毕竟我们公司服务器主要用的都是阿里的😂。

好了,那么问题来了,这个问题要怎么解决,试了很多种方案,麻烦的是小程序的那些域名白名单第一需要ICP备案,第二需要https证书,我又不想又去申请一张证书,那实在太麻烦了。所以最后发现比较折衷的方法,那就是用nginx做反向代理,连接到到阿里的OSS,下面附上配置

如上,大家可以把bucket-name.oss-cn-shenzhen-internal和aaa.com换成自己的阿里云OSS的endpoint和域名

另外,如果绑定了域名到OSS的话,因为小程序必须使用https访问,但是如果我们把OSS绑定的域名换成https访问的话,阿里的服务器会返回他们自己的https证书,然后小程序会直接校验TLS失败而直接拒绝了请求,因此只能通过自己的服务器做反向代理,毕竟这样能够返回我们自己域名的https证书,这样又没有必要特地给oss再指定一个二级域名,还省掉了麻烦的申请https证书的过程。而且可以看到用的是OSS的内部域名访问的,这样用自己服务器的流量来替换了OSS直接的外网流量,说不定是牺牲了服务器一些性能,而减少了OSS的外网流入流量,省钱啊。毕竟OSS不算内网流量。

还有就是我发现小程序内部使用到图片的时候,那个image标签和css的background-image的时候,地址是http和直接用OSS的那个三级域名也是没有问题的,那样就可以避免这些静态数据走逻辑服务器,还是直接走OSS吧,只是上存的时候比较绕,要到自己的服务器后台一圈再去OSS罢了。