正则expression式在HAProxy的资产pipe理reqrep

我使用这种URL在S3上托pipe资源: http ://cdn.site.com/image.jpg在我的应用程序中,我自动提供版本化的URL来强制浏览器在部署之后下载新文件:“/1.2.3 /image.jpg”

在每个部署中,我只想覆盖较旧的文件。 所以我需要在HAProxy的正则expression式来重写这个:

1.2.3/image.jpg 

进入这个:

 http://cdn.site.com/image.jpg 

另一个问题是:将HAProxyredirect请求(对用户可见),或者只是在'后面'这样做,所以这个redirect将是不可见的。

提前致谢!

这是代码来做到这一点。

 acl imagereq path_beg /image.jpg reqrep ^Host:\ 1.2.3 Host:\ cdn.site.com if imagereq 

但我不认为这真的是你想要做的。

reqrep将有haproxy更改它获得它为您的用户服务的内容。

但是,如果用户必须一直到你的服务器,那么你已经浪费了一个良好的CDN的大部分好处。 (好的CDN比你更接近你的用户,你的用户可以从他们那里获得你的一些内容,而不是一路回到你身边)

当您使用reqrep时,您只需将haproxypopup到您最近的CDN节点,而不是从您维护的服务器获取。

理想情况下,你想要做的就是调整你的HTML直接指向你的CDN。

看看Facebook等网站的查看源代码。你会看到他们乱七八糟的链接到像static.ak.fbcdn.net URLS。

static.ak.fbcdn.net是static.ak.facebook.com.edgesuite.net的别名。 static.ak.facebook.com.edgesuite.net是a749.dsw4.akamai.net的别名。

akamai是一家知名的CDN提供商。

通过明确地将您的cdn内容位置放在您的原始HTML中,您的用户只需抓取您的主HTML,而其他所有内容将直接从CDN(希望)从您的用户加载比您更…

你可以考虑让haproxy发送一个redirect到用户指向CDN的内容。 但正如我之前所说,如果用户已经一路走到你的前门,那么你正在浪费CDN的很多好处。

祝你好运。