系统相关
首页 > 系统相关> > linux – Nginx Proxy_Pass到CDN与直接击中CDN. Pro,Con’s,它是慢还是对服务器有负面影响?

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

作者:互联网

情况

CDN很棒,但我发现需要动态地将文件填充到一个文件中.下面我将介绍如何设置NGINX来执行此操作.我的问题是,它是否更慢或者是否有任何性能问题,对资源进行proxy_pass而不是直接命中资源?例如.. proxy_pass通过URL到http://domain.com/file.jpg vs直接加载http://domain.com/file.jpg.另外,您是通过对另一个图像位置执行proxy_pass而不是简单地提供图像来保存任何服务器服务器资源吗?

我做了什么

我设置了一个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 for xyz.jpg
> Proxy_pass到CDN
>如果是文件200,则加载文件:如果是404,则加载本地文件
>在CDN上触发xyz.jpg的文件生成
>请求尝试#2 for xyz.jpg
> Proxy_pass到CDN
>文件存在(200)..无限期地从CDN加载文件而不是本地加载文件

正在使用的技术

> PHP
> Ubuntu
> Nginx
> CDN

解决方法:

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

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

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

>客户请求x.jpg
> Nginx解析了CDN的位置
> Nginx向CDN索要x.jpg
> CDN将x.jpg发送给Nginx
> Nginx接收并缓冲x.jpg等
> Nginx将x.jpg转发给客户

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

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

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

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

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

标签:linux,nginx,cdn,proxy,reverse-proxy
来源: https://codeday.me/bug/20190902/1790695.html