Назад | Перейти на главную страницу

Regexp в reqrep 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 перенаправлять запрос (видимый для пользователя) или просто делать это «назад», чтобы это перенаправление было невидимым.

Заранее спасибо!

Вот код для этого.

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.

Удачи.