Article / 文章中心

访问阿里云CDN加速资源返回403状态码的解决方法

发布时间:2020-05-09 点击数:1904

概述

本文主要介绍访问CDN加速资源返回403状态码的解决方法。

详细信息

访问CDN加速的资源返回403状态码解决方法的相关信息如下。

测试源站域名

1.检查CDN的加速域名是否可以访问源站,可以使用修改本地host文件的方式指定访问源站IP,操作步骤如下。

i.本地的host文件路径如下。

C:\Windows\System32\drivers\etc\hosts

ii.编辑hosts文件内容,增加一条记录并保存。前面为源站IP,后面为加速域名,如下图所示。

2.验证相同CDN加速的URL,访问源站是否也是403。如果源站访问结果也是403,则说明源站报错,需针对源站进一步审核。

排查CDN节点

打开开发者工具,通过Chrome浏览器打开CDN加速的一个URL链接。

排查是否开启鉴权,发现鉴权报X-Tengine-Error:denied by req auth: no url arg auth_key错误。如果不需要使用鉴权则关闭鉴权。如果需要使用,则检查鉴权的配置中MD5值是否计算错误,鉴权相关配置说明,请参见配置URL鉴权

3.如果报如下错误,请确认是否开启了CC防护功能。如开启了CC防护功能,您可以将访问者的IP加入IP白名单。

The website is under attack, You have requested too frequently

注:CC防护规则如下。

每分钟访问150次,集中访问的URL为同一个,认为是攻击。

每分钟访问500次,请求的不是同一个URL,认为是攻击。

携带验证码Cookie,每分钟访问100次,认为是攻击。

4.如果源站是OSS源站,报“AccessDenied”错误。您可以找到源Bucket进行以下操作。

▫如果对于源Bucket设置了私有权限,您需要提供签名URL,但不能开启CDN的过滤参数。

▫对于源Bucket不允许Refer为空这种情况,您需要将Bucket的防盗链配置设置成允许为空。

5.确认打开的URL链接不是CDN域名,但应用了CDN的资源。排查是否为Refer调用,如果Response Headers中有X-Tengine-Error:denied by Referer ACL,则说明Refer规则设置不正确。这种情况下,您可以先取消CDN的Refer配置,然后排查CDN日志,找到对应的访问日志,找到Refer头并添加白名单。在进行防盗链设置后,如果访问CDN加速资源返回403错误,请参考由于防盗链异常导致访问CDN返回403错误的解决方法

6.绑定源站后,经测试仍返回403。在Response Headers中,CDN的L1和L2层缓存都不命中,说明是源站抛出的403错误。这种情况下,您可以排查源站是否存在问题。绑定主机名后,测试是否返回403错误。如果缓存命中率较低,请参见CDN命中率低

适用于

•CDN

阿里云代理商    阿里云分销商