Regexp в требовании HAProxy для управления активами
Я размещаю ресурсы на S3 с таким URL-адресом: http://cdn.site.com/image.jpg В моем приложении я автоматически предоставляю версионный URL-адрес, чтобы заставить браузер загружать новые файлы после развертывания: "/1.2.3/image.jpg"
В каждом развертывании я хотел бы перезаписывать только старые файлы. Так что мне нужно регулярное выражение в HAProxy, чтобы переписать это:
1.2.3/image.jpg
в это:
http://cdn.site.com/image.jpg
Другой вопрос: перенаправит ли HAProxy запрос (видимый для пользователя) или просто сделает это в "назад", чтобы это перенаправление было невидимым.
Заранее спасибо!
1 ответ
Вот код, чтобы сделать это.
acl imagereq path_beg /image.jpg reqrep ^Host:\ 1.2.3 Host:\ cdn.site.com if imagereq
Но я не думаю, что это действительно то, что вы хотите сделать.
У reqrep будет изменение haproxy, где он получит контент, который обслуживает вашего пользователя.
ОДНАКО: если пользователь должен пройти весь путь до вашего сервера, то вы уже потратили большую часть пользы хорошего CDN. (хорошие CDN ближе к вашим пользователям, чем вы, и ваши пользователи выигрывают, получая от них часть вашего контента вместо того, чтобы возвращаться к вам)
Когда вы используете reqrep, вы просто получаете haproxy для ближайшего к вам узла CDN вместо того, чтобы получать его с обслуживаемого вами сервера.
В идеале вы должны настроить HTML-код так, чтобы он указывал прямо на ваш CDN.
Взгляните на источник просмотра для сайтов, таких как Facebook, и т. Д. Вы увидите их заваленные ссылками на URL-адреса, такие как static.ak.fbcdn.net.
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 отправлял перенаправление пользователю, указывая ему на CDN для контента. Но, как я уже говорил ранее, если пользователь уже прошел весь путь до вашей входной двери, вы теряете большую часть преимуществ CDN.
Удачи.