Я согласен с Рихом. Если вы хотите, чтобы изображения обслуживались с другого веб-сервера, разместите их на другом веб-сервере. Например:
<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, вы можете попросить его проверить пакеты и предпринять соответствующие действия. Такой модуль может существовать. Очевидно, существует множество других модулей с открытым исходным кодом, которые можно использовать в качестве отправной точки.
Но я бы лучше выстрелил себе в голову.