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