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.

Удачи.

Другие вопросы по тегам