概述

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

 

详细信息

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

 

测试源站域名

  1. 检查CDN的加速域名是否可以访问源站,可以使用修改本地host文件的方式指定访问源站IP,操作步骤如下。
    1. 本地的host文件路径如下。
      C:\Windows\System32\drivers\etc\hosts
    2. 编辑hosts文件内容,增加一条记录并保存。前面为源站IP,后面为加速域名,如下图所示。
  2. 验证相同CDN加速的URL,访问源站是否也是403。如果源站访问结果也是403,则说明源站报错,需针对源站进一步审核。

 

排查CDN节点

  1. 打开开发者工具,通过Chrome浏览器打开CDN加速的一个URL链接。
  2. 排查是否开启鉴权,发现鉴权报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