Я размещаю ресурсы на 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.
Удачи.