Назад | Перейти на главную страницу

Интеграция Apache / Glassfish

Итак, в настоящее время у меня есть сервер Glassfish 3.1 и сервер apache 2.2, работающие на одном компьютере. Однако я пытаюсь выяснить, как направить некоторый трафик через сервер apache на сервер Glassfish, чтобы скрыть нестандартные порты 8080,8181. У меня также есть статический контент, обслуживаемый на сервере apache. Я немного искал и прочитал несколько примеров, в которых говорится об этом, однако я действительно новичок в apache и не разбираюсь в вещах virtualhost и mod_proxy. Любая помощь в понимании этого и того, как достичь того, что я пытаюсь сделать, была бы замечательной.

РЕДАКТИРОВАТЬ

На примере Шейна я пробовал следующее.

<VirtualHost *:80>
    ServerName forum.mydomain.com
    # any logging config, etc, that you need
    ProxyPass / http://127.0.0.1:8080/forum/
    ProxyPassReverse / http://127.0.0.1:8080/forum/
</VirtualHost>

Но теперь весь мой трафик собирается http://127.0.0.1:8080/forum/ и по какой-то причине все изображения отсутствуют. Так что позвольте мне лучше объяснить свой сценарий. У меня есть сервер apache, который обслуживает статические страницы, доступ к этим страницам осуществляется с mydomain.com. Затем у меня есть форум, который работает как веб-приложение на моем сервере Glassfish, и они обслуживаются на mydomain.com:8080/forum/, я бы хотел, чтобы forum.mydomain.com перешел на mydomain.com:8080/ forum / но скрыть от пользователя порт 8080. Дайте мне знать, что вы думаете.

ИЗМЕНИТЬ ЧАСТЬ 2

Так как моя последняя попытка не сработала, я решил попробовать другое отклонение примеров Шейна, поэтому я попробовал следующее.

 <VirtualHost *:80>
    ServerName mydomain.com
    ServerAlias subdomain.mydomain.com
    DocumentRoot "/usr/local/apache/htdocs"

    <Location /forum>
       ProxyPass http://127.0.0.1:8080/forum/
       ProxyPassReverse http://127.0.0.1:8080/forum/
    </Location>
</VirtualHost>

Но это тоже не сработало, теперь, если я нажимаю mydomain.com, он переводит меня на mydomain.com//forums/list.page, но это ошибка 404 (я думаю, это странно, потому что он явно попал на сервер Glassfish, потому что он перенаправлен на страницу list.page). Однако, если я перейду на subdomain.mydomain.com, я перейду на мои обычные статические веб-страницы. Я чувствую, что должен быть рядом, но я просто не уверен, что не так. В этом примере я надеялся, что mydomain.com и subdomain.mydomain.com переведут меня на мои статические страницы, а mydomain.com/forum/ переведет меня в мое приложение форума на Glassfish.

ИЗМЕНИТЬ Часть 3 Финал?

Итак, я наконец получил маршрутизацию, как я хотел, НО по какой-то причине на форуме отсутствуют все изображения. В итоге я сделал это следующим образом.

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias subdomain.mydomain.com mydomain.com
    DocumentRoot "/usr/local/apache/htdocs"

</VirtualHost>


<VirtualHost *:80>
    ServerName forum.mydomain.com
    # any logging config, etc, that you need
    ProxyPass / http://127.0.0.1:8080/forum/
    ProxyPassReverse / http://127.0.0.1:8080/forum/
</VirtualHost>

Теперь мне просто нужно разобраться в проблеме с изображением. . .

В основном ProxyPass Директивы могут обслуживать запросы к местоположению с контентом с другого сервера HTTP (или AJP).

Вот пример конфигурации с комментариями, которые могут помочь прояснить ситуацию:

# We'll call this your existing vhost:
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /path/to/www/
    # other existing config
    # Let's say you want to serve http://example.com/glassfishapp from the 8080 listener:
    <Location /glassfishapp>
        ProxyPass http://127.0.0.1:8080
        ProxyPassReverse http://127.0.0.1:8080
    </Location>
</VirtualHost>

# Now, let's say there's a whole domain you want to serve from the 8181 listener:
<VirtualHost *:80>
    ServerName glass.example.com
    # any logging config, etc, that you need
    ProxyPass / http://127.0.0.1:8181/
    ProxyPassReverse / http://127.0.0.1:8181/
</VirtualHost>