По соображениям производительности мне пришлось переписать часть нашей веб-инфраструктуры.HTTP-сервер, способный проксировать запросы
С этой целью я написал критическую часть как веб-приложение на C++. Это веб-приложение прослушивает данный порт, одновременно принимает ровно по одному TCP-соединению и обрабатывает все HTTP-запросы, которые он получает по текущему соединению.
Вы можете запустить его, как это слушать на порту 8080:
./webapp 8080
Хотя это работает безупречно и гораздо быстрее, чем раньше, его ограничением является один-соединение-на-времени характер применения , Вы не можете одновременно обслуживать HTML-страницы, Javascript и изображения более чем одним соединением только с одним экземпляром приложения.
Чтобы преодолеть это ограничение, я хочу запустить интерфейсный HTTP-сервер с обратным прокси-сервером, который прослушивает порт 80 и равномерно перенаправляет входящие HTTP-запросы на несколько экземпляров моего веб-приложения, работающего в фоновом режиме. Эти случаи могут быть созданы во время загрузки так:
./webapp 10000
./webapp 10001
./webapp 10002
./webapp 10003
./webapp 10004
./webapp 10005
./webapp 10006
./webapp 10007
./webapp 10008
./webapp 10009
Фронтэнд должен быть сконфигурирован, чтобы установить постоянное подключение к HTTP для каждого веб-приложения во время запуска, а затем пересылать входящие HTTP-запросы к одно из запущенных веб-приложений, равномерно распределяющее их.
Обратный прокси также должен поддерживать SSL от клиента к себе. Поддержка SPDY была бы плюсом, но не обязательна.
Мой вопрос: Какие HTTP-обратные прокси-серверы могли бы работать в качестве интерфейса в моем сценарии? Если вы знаете более одного, что является плюсами и минусами каждого из них?
Я ценю ваши усилия, но во всей честности я даже не думаю, что вы прочитали мой вопрос. Мотивация наличия единого сервера подключения заключалась в том, что я не хочу повторно изобретать колесо. Я только хотел переписать критическую часть производительности и оставить пул соединений и, таким образом, более зрелым, уже существующим веб-сервером. Я НЕ хочу генерировать новый процесс для каждого TCP-соединения. Вот почему я сказал, что хочу запускать свои процессы * во время загрузки * и чтобы интерфейс был настроен на установление постоянного HTTP-подключения к каждому веб-приложению во время запуска. – JohnCand
По сути, я ищу хороший http://en.wikipedia.org/wiki/Reverse_proxy (см. Изображение справа и примеры). – JohnCand
Я отредактировал вопрос, чтобы сделать его более понятным. Я надеюсь, что это помогает. – JohnCand