Лучший способ перенаправить запросы изображения к другому веб-серверу?

Вы можете использовать следующее регулярное выражение для проверки допустимости файла.

/\.(jpe*g|png)$/gi

И затем вы можете использовать метод test(), чтобы проверить, является ли файл действительным в вашем операторе if.

if(/\.(jpe?g|png)$/gi.test(s)) {
  //TODO
}
5
задан Bob Aman 13 October 2009 в 14:13
поделиться

2 ответа

Чем далее цепочка можно сделать это, тем лучше.

Идеально, сделайте это на уровне DNS при помощи другого домена для Ваших изображений (например, imgs.example.com)

Если можно предоставить его, заставить кого-то еще делать это при помощи CDN (Сеть доставки контента).

- Обновление -

Существует также 2 функции mod_rewrite апача, на который Вы могли бы хотеть посмотреть. Они все описаны хорошо по http://httpd.apache.org/docs/1.3/misc/rewriteguide.html.

Первое находится под направляющимся "Динамическим Miror" в вышеупомянутом документе, который использует mod_rewrite флаг Proxy [p]. Это позволяет Вашему серверу тихо выбрать файлы от другого домена и возвратить их.

Второе должно просто перенаправить запрос к новому домену. Эта вторая опция помещает меньше деформации на Ваш сервер, но запрашивает все еще потребность войти, и это замедляет заключительный рендеринг страницы, поскольку каждый запрос должен выполнить чрезвычайно избыточный запрос к Вашему серверу сначала.

3
ответ дан 15 December 2019 в 01:13
поделиться

я соглашаюсь с rikh. Если Вы хотите, чтобы изображения были вручены от другого веб-сервера, то служите им на другом веб-сервере. Например:

<IMG src="images/Brett.jpg">

становится

<IMG src="http://brettnesbitt.akamia-technologies.com/images/Brett.jpg">

Любой вид подсистемы балансировки нагрузки все еще подаст изображение от канала веб-сервера, который является тем, чего Вы стараетесь избегать.


я, конечно, знаю то, что Вы действительно хотите. То, что Вы действительно хотите, для любого запроса как:

GET images/Brett.jpg HTTP/1.1

автоматически быть преобразованным в:

HTTP/1.1 307 Temporary Redirect
Location: http://brettnesbitt.akamia-technologies.com/images/Brett.jpg

этим путем Вы не должны делать никакой работы, кроме копии изображения к другому веб-серверу.

То, что я действительно не знаю, как сделать.


При помощи фразы "NAT" это подразумевает, что брандмауэр/маршрутизатор получает Запросы HTTP, и Вы хотите передать запрос к другому внутреннему серверу, если Запрос HTTP был для файлов изображений.

Это затем вызывает вопрос о том, что Вы на самом деле пытаетесь сохранить. Неважно, какой внутренний веб-сервер обслуживает Запрос HTTP, данные все еще оказываются перед необходимостью течь через канал брандмауэра/маршрутизатора.

Причина я поднимаю его, состоит в том, потому что общий сценарий, когда кто-то хочет вручить изображения с другого сервера, - то, потому что они хотят разделить широкую полосу пропускания, главным образом статичную, содержание стоимости низкого ЦП от их фактической логики.

Только использование NAT, чтобы переписать пакет и отправить его на другой сервер не будет работать для той распространенной проблемы.

Другая причина могла бы состоять в том, потому что изображения не являются статическим содержанием в Вашей системе и запросом к

GET images/Brett.jpg HTTP/1.1

на самом деле создает изображение на лету, со стоимостью высокого ЦП, или только использующий с доступными данными (т.е. база данных SQL Server) к ServerB.

Если это верно, затем я все еще использовал бы другое имя сервера по запросу изображения:

GET http://www.brettsoft.com/default.aspx HTTP/1.1
GET http://imageserver.brettsoft.com/images/Brett.jpg HTTP/1.1

я понимаю то, что Вы надеетесь на с контролем сетевого пакета переопределить правило NAT и отправить ему на другой сервер - я никогда не видел никакую подобную вещь, которая может сделать это.

Это звучит как больше "выхода прокси", где веб-прокси делает это. (т.е. pfSense и m0n0wall не могут сделать этого),

Который затем приводит к своего рода решению, мы использовали однажды: пользовательский веб-сервер, который анализирует запрос, выполняет соответствующий запрос от некоторого внутреннего сервера, и двоичный файл пишет ответ клиенту.

На той боли в решении для задницы настоял "консультант по безопасности", который, по-видимому, верит в безопасность через мрак.

я знаю, что IIS не может сделать таких вещей для Вас сам - я не знаю о других продуктах веб-сервера.


я просто расспросил тут и там, и по-видимому если бы Вы хотели записать пользовательский модуль ядра для Вас основанный на Linux маршрутизатор, то у Вас мог бы быть он, осматривают пакеты и принимают соответствующие меры. Такой модуль мог бы существовать. Существует, по-видимому, много других открыто полученных модулей для использования в качестве начальной точки.

Но я выстрелил бы мне в голову.

1
ответ дан 15 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: