我使用这种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的很多好处。
祝你好运。