Использование протокола HTTP между серверами - PullRequest
1 голос
/ 03 февраля 2012

У меня есть конфигурация двух серверов, работающих в интрасети. Первый - это веб-сервер, который генерирует html-страницы в браузер, этот html отправляет запросы на второй сервер, который генерирует и возвращает отчеты (также html) в соответствии со значением некоторого параметра GET. Поскольку это решение небезопасно (переданный параметр доступен), я подумал о том, чтобы html (созданный первым сервером) отправлял запросы на отчет обратно на первый сервер, там будет произведена проверка безопасности и запрос отчет будет отправлен на сервер отчетов по протоколу http между серверами, а не от браузера к серверу.
Разметка отчета будет возвращена на первый сервер (в виде строки?), Добавлена ​​к объекту ответа и представлена ​​в браузере. Это обычная практика http?

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Да, это обычная практика.Фактически, он работает так же, когда вашему веб-серверу нужно извлечь некоторые данные из базы данных (не публикуемой, например, не в DMZ веб-сервера).

Но вы должны иметь возможность использовать динамическое генерирование страниц(не статический html. Предположим, что ваш веб-сервер поддерживает PHP или java, например).

  • ваша страница эквивалентна HTTP GET (или POST, или как вам угодно), чтобы сделать вторуюсервер, отправив любой необходимый параметр, который вам нужен.Вы можете использовать библиотеки cURL или fopen (http://), и т. Д.

  • , он получает результат, проверяет код возврата, также может выполнять необязательные манипуляции с содержимым (например, заменять некоторый текст или URL-адреса)

  • отправляет результат обратно в браузер пользователя.

Если вы не можете (или не хотите) использовать динамическое создание страниц,Вы можете настроить свой веб-сервер так, чтобы он передавал некоторые запросы на второй сервер (например, с помощью mod_proxy Apache).

Например, когда на сервер 1 поступает запрос на URL-адрес «http://server1/reports", веб-сервер передает запрос на»http://server2/internal/reports?param1=value1&param2=value2&etc".

Пользователь получит результат "http://server2/internal/reports?param1=value1&param2=value2&etc",, но никогда не увидит, откуда он приходит (с его точки зрения, он знает только http://server1/reports). Вы можете делать более сложные манипуляции, связывая прокси сПерезапись URL (так что вы можете использовать некоторые параметры запроса к server1 в запросе к server2).

Если это не совсем понятно, не стесняйтесь давать более подробную информацию (o / s, технология веб-сервера, URL)и т. д.)может дать вам больше подсказок.

0 голосов
/ 03 февраля 2012

Два других варианта:

  1. Настройка HTTP-сервера, подключенного к Интернету, с прокси-сервером (например, mod_proxy в Apache)
  2. Оставьте сервер как есть и добавьте Application Firewal
...