2009-11-17 2 views
0

У меня есть два сервера смолы - r-server-a и r-server-b. Я создал два, потому что у обоих есть веб-приложения, которые должны быть в корневом контексте пути '/' (и использовать тот же порт '80').Как настроить Apache для пересылки некоторых URL-адресов на два контейнера для смолы?

Однако оба веб-приложения должны видеть друг друга (т. Е. Получать доступ к ресурсам другого приложения & страниц). Вот почему я решил использовать сервер Apache для обработки этих двух.

Как это сделать?

ответ

0

Что вам нужно в Apache mod_proxy в апаче конфигурации (например, виртуальные конфигурации хоста) поставил:

ProxyPass/http://localhost:8080/<web-app context root>/ 
ProxyPassReverse/http://localhost:8080/<web-app context root>/ 
+0

Pardon, но как настроить apache для пересылки, например http: //localhost/this/is/page1.html, на r-server-a и http: //localhost/this/is/another/page.html на r-server-b с помощью mod_proxy? Спасибо –

+0

Im пытается выяснить, как я могу это проксировать с помощью регулярного выражения –

+0

Возможно, mod_rewrite может помочь, если вы используете mod_proxy для размещения localost/serverA и localhost/serverB, а затем используйте mod_rewrite для перезаписи localhost/this/is/page1.html localhost/serverA/page1.html и localhost/this/is/another/page.html на localhost/serverB/another/page.html. Сложно, но я думаю, что это сработает. –

0

И используя тот же порт означает, что не один и тот же IP-адрес. это может быть одна и та же машина, каждая из которых привязана к одному сетевому адаптеру или двум отдельным машинам. Это не так ясно из вопроса, однако, это не имеет большого значения для этого.

По ряду причин я бы выбрал NGINx как обратный прокси (вместо apache) и настроил его соответствующим образом.

Посмотрите на tornado's documentation, как они делают это для торнадо (в этом случае, 4 экземпляра на каждом сервере) и копируют концепцию в ваше местоположение. Удачи.

+0

Они используют один и тот же IP-адрес. Оба используют один и тот же ip, один и тот же порт, и оба находятся в корневом контексте. Однако страницы, которые они обслуживают, различны. Например, r-server-a служит http: //localhost/this/is/page1.html, а другие серверы r-server-b http: //localhost/this/is/another/page.html. Однако оба они должны быть одновременно, потому что http: //localhost/this/is/page1.html может перенаправляться на http: //localhost/this/is/another/page.html и наоборот. Кроме того, я не могу сделать так, чтобы эти два приложения вступили в силу из-за многочисленных конфликтов (с точки зрения конфигурации). –

+0

Это правда, но не имеет значения. см., если у вас есть два экземпляра 127.0.0.1:8000 и 127.0.0.1:8001, они могут быть представлены как 10.0.0.1:8000 и 20.0.0.1:8000 - это тот же самый компьютер, тот же порт, но другой IP-адрес. Я не вижу возможности запуска на одной машине двух слушателей на одном и том же порту, привязанных к одному и тому же IP-адресу. –

+0

Мне не нужны они для запуска на разных серверах, просто доступны с такими же ip и портом. Именно поэтому я пытаюсь использовать apache как прокси/virtualhost/etc для приема URL-адресов, таких как 127.0.0.1:80/this/is/ page1.html и разрешите моему r-серверу-a обрабатывать его (т. е. через url rewrite, proxy, caucho module и т. д.) и принимать URL-адреса, такие как 127.0.0.1:80/this/is/another/page.html и иметь его обработанный моим r-сервером-b. Мой apache будет работать на 127.0.0.1. но мои смоляные серверы могут работать на 127.0.0.1:8081 и 127.0.0.1:8082 (например). Мне просто нужно сделать веб-приложения с одним и тем же контентом, доступным с использованием того же ip и порта. ти –