Nginx Proxy_Pass到CDN与直接击中CDN.Pro,Con's,它是慢还是对服务器有负面影响?

Jus*_*inP 3 linux proxy reverse-proxy cdn nginx

情况

CDN很棒,但我发现需要动态地将文件填充到一个文件中.下面我将介绍如何设置NGINX来执行此操作.我的问题是Is it any slower or are there any performance issues for doing a proxy_pass to a resource than hitting the resource directly?例如.. proxy_pass通过URL到http://domain.com/file.jpg与直接加载http://domain.com/file.jpg.还有,are you saving any server server resources by doing a proxy_pass to another image location vs simply serving up the image

我做了什么

我设置了一个Nginx服务器,因此对http://domain.com/image/XYP.jpg的请求会对CDN进行Proxy_pass,有效加载http://cdn.com/XYP.jpg.我配置Nginx来检查是否有错误代码,然后做其他事情.IF(错误页面)404,nginx可以将您传递给本地资源,然后可能会触发在CDN上创建文件.

下次,您要求http://domain.com/image/XYP.jpg,您将访问CDN.

所以步骤是:

  • 请求尝试#1 xyz.jpg
  • Proxy_pass到CDN
  • 如果是文件200,则加载文件:如果是404,则加载本地文件
  • xyz.jpgCDN上的触发文件生成
  • 请求尝试#2 xyz.jpg
  • Proxy_pass到CDN
  • 文件存在(200)..无限期地从CDN加载文件而不是本地加载文件

正在使用的技术

  • PHP
  • Ubuntu的
  • Nginx的
  • CDN

Day*_*ayo 5

proxy_pass对CDN没有多大意义.当你考虑proxy_pass的作用时,它应该是显而易见的.

proxy_pass只是意味着Nginx对后端说(在你的情况下为CDN)获取资源并返回给我,以便我可以将它提供给客户端.

所以在你的情况下,发生了什么......

  1. 客户端请求x.jpg
  2. Nginx解析了CDN的位置
  3. Nginx向CDN索要x.jpg
  4. CDN将x.jpg发送给Nginx
  5. Nginx接收并缓冲x.jpg等
  6. Nginx将x.jpg转发给客户

由于Nginx仍然必须将文件发送给客户端,因此往返CDN本质上是一种浪费.最好直接发送它...

  1. 客户端请求x.jpg
  2. Nginx从本地光盘获取x.jpg
  3. Nginx将x.jpg发送给客户端

如果您想使用CDN,那么您应该请求重定向到CDN ...

  1. 客户端请求x.jpg
  2. Nginx将客户端重定向到CDN
  3. CDN将x.jpg发送给客户端

显然,在重定向的情况下,您将无法进行404测试,因为重定向后Nginx不再涉及事务.