У меня есть экземпляр GlassFish, на котором запущены разные службы на разных портах. Веб-сервер Apache находится перед GlassFish, и я хочу настроить виртуальные хосты на Apache для перенаправления на определенные порты на сервере GlassFish.
Я добавил Tomcat AJP в качестве jvm-опции для прослушивания порта 8009 и поместил необходимые .jars в папку lib /.
Как настроить GlassFish для перенаправления с порта 8009 на заданный порт (службу) в том же экземпляре?
Вместо использования ajp я бы рекомендовал использовать mod_proxy. Я сам сделал это с большим успехом. Как я настроил свои вещи, я просто настраиваю виртуальный домен так, чтобы он указывал на каталог, и создавал файл .htaccess как таковой:
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
Конечно, измените, чтобы соответствовать вашим HTTP-портам. В tomcat (который я использую) я также редактирую server.xml в разделе conf. Для коннектора на порту 8080 я установил proxyName в соответствии с виртуальным хостом, а proxyPort - на 80.
Я должен добавить примечание, что я использую динамические виртуальные хосты для своей конфигурации, конфигурация моих сайтов (я использую debian) в / etc / apache2 / sites-available выглядит так:
<VirtualHost IP>
Servername yourdomain.com
ServerAlias *.yourdomain.com
UseCanonicalName Off
LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
CustomLog /var/www/yourdomain.com/logs/custom.log vcommon
ErrorLog /var/www/yourdomain.com/logs/error.log
TransferLog /var/www/yourdomain.com/logs/access.log
RewriteLog/var/www/yourdomain.com/logs/rewrite.log
RewriteLogLevel 2
VirtualDocumentRoot /var/www/yourdomain.com/sites/%1/html
VirtualScriptAlias /var/www/yourdomain.com/sites/%1/cgi-bin
LogLevel debug
<Directory /var/www/yourdomain.com/sites/>
AllowOverride All
</Directory>
</VirtualHost>
Это означает, что stackoverflow.yourdomain.com перейдет в /var/www/yourdomain.com/sites/stackoverflow/html
Я знаю, что вы не просили последнюю часть, я просто предоставил ее, чтобы дать полный обзор моей настройки и того, как она вписывается в файл .htaccess с помощью ProxyPass и ProxyPassReverse
Я бы посоветовал вам использовать модуль Apache mod_loadbalancer, который был специально реализован для использования с сервером приложений Glassfish и способен реагировать на команды конфигурации сервера приложений Glassfish, инициированные из консоли администратора.
См. Пример - https://blogs.oracle.com/kshitiz/entry/load_balancer_plugin_in_glassfish
Вы можете использовать Apache для указания на несколько разных серверов разных типов.
# Drop me in a file called my_proxies.conf in conf.d # Apache picks up everything in conf.d/*.conf NameVirtualHost *:80 <VirtualHost *:80> # This Apache serves up images and cgi-bin ProxyPass /images ! ProxyPass /cgi-bin ! # # Got stuff on this server (Jetty, Glassfish, Tomcat, or Apache ) # ProxyPass /foo http://localhost:8080/foo ProxyPassReverse /foo http://localhost:8080/foo Redirect /foo http://localhost:8080/foo ErrorLog /tmp/foo_error_log CustomLog /tmp/foo_access_log # # Root comes last # Let's put our main app on its own special server # ProxyPass / http://localhost:9090/ ProxyPassReverse / http://localhost:9090/ ErrorLog /tmp/bar_error_log CustomLog /tmp/bar_access_log # </VirtualHost>