解决nginx反向代理cdn.jsdelivr.net失败问题

背景与问题

在用的一个WP插件里面加载了很多静态资源,但是作者将它们都挂在了cdn.jsdelivr.net下面。这样有下面几个问题:

  • cdn.jsdelivr.net可以收集到访问信息
  • cdn.jsdelivr.net可能并不可达

为了解决这个问题,我打算通过将资源文件映射到自己的CDN上,然后源站配置为反向代理到cdn.jsdelivr.net的nginx代理转发。请求流程如下

但前几次访问都是好的,后来发现就变成一直503返回了,但同时使用浏览器都是好的。

分析与解决

经过反复尝试,终于知道了原因出在nginx请求cdn.jsdelivr.net时并没有允许gzip编码,可能服务商对于此种请求做了频率限制,于是就出现了503的问题。

经过搜索,得知nginx在proxy_pass阶段可以使用gzip,所以接下来只需要配置一下即可。在相应的配置块变成了下面的内容:

起作用的是gzip_proxied any,它可以让nginx作为client请求时,允许gzip编码。

经过验证,问题解决。

发表评论

为防机器,验证码请直接输入4个数字1

*