2016-10-06 2 views
0

У меня есть сервер Apache, который, как предполагается, перенаправляет все запросы на два экземпляра Tomcat: «geonetwork» и «geoserver».Apache проксирование Несколько экземпляров Tomcat с Mod_JK

Они оба доступны с сервера Apache, но почему-то я не могу заставить перенаправление работать.

Мой хосты файл выглядит следующим образом:

<VirtualHost *:80> 
     ServerName localhost 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html 
</VirtualHost> 

<VirtualHost *:80> 
     ServerName geonetwork 
     ServerAdmin [email protected] 
     DocumentRoot /usr/local/tomcat_gn/webapps 

     <Directory "/usr/local/tomcat_gn/webapps"> 
      #Options MultiViews FollowSymLinks 
      Options All 
      AllowOverride all 
      Require all granted 
     </Directory> 

     #LogLevel info ssl:warn 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     JkMount /geonetwork|/* gn_worker 
</VirtualHost> 

<VirtualHost *:80> 
     ServerName geoserver 
     ServerAdmin [email protected] 
     DocumentRoot /usr/local/tomcat_gs/webapps 

     #LogLevel info ssl:warn 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     JkMount /geoserver|/* gs_worker 
</VirtualHost> 


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet 

В директивах DocumentRoot, указывают на экземпляры TOMCAT смонтированных каталогов.

Это файл worker.properties:

# 
worker.list=gn_worker,gs_worker 

# 
#------ ajp13_worker WORKER DEFINITION ------------------------------ 
#--------------------------------------------------------------------- 
# 

# 
# Defining a worker named ajp13_worker and of type ajp13 
# Note that the name and the type do not have to match. 
# 
worker.gs_worker.port=8009 
worker.gs_worker.host=geoserver 
worker.gs_worker.type=ajp13 

worker.gn_worker.port=8009 
worker.gn_worker.host=geonetwork 
worker.gn_worker.type=ajp13 
# 
# Specifies the load balance factor when used with 
# a load balancing worker. 
# Note: 
# ----> lbfactor must be > 0 
# ----> Low lbfactor means less work done by the worker. 
worker.gs.lbfactor=1 
worker.gn.lbfactor=1 

# 
# Specify the size of the open connection cache. 
#worker.ajp13_worker.cachesize 

# 
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ---------------------- 
#--------------------------------------------------------------------- 
# 

# 
# The loadbalancer (type lb) workers perform wighted round-robin 
# load balancing with sticky sessions. 
# Note: 
# ----> If a worker dies, the load balancer will check its state 
#  once in a while. Until then all work is redirected to peer 
#  workers. 
worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=gn_worker,gs_worker 

Что меня поражает больше всего, это то, что первый VirtualHost всегда работает. Таким образом, в этом примере, он решает корень апача, но если я ставлю GeoNetwork или Geoserver'у, он правильно решает:

http://localhost/geonetwork или http://localhost/geoserver

Я стереосистеме и обновите из идей для отладки это! Кто-нибудь может мне помочь?

+0

В итоге я установил прокси с помощью Apache mod_proxy, который очень прост. – doublebyte

ответ

0

Я думаю, что вы могли забыть включить конфигурацию mod_jk перед делать JkMount в каждом виртуальном хосте:

# Load mod_jk module 
LoadModule jk_module modules/tomcat-connector/mod_jk.so 

# Add the module (activate this lne for Apache 1.3) 
# AddModule  mod_jk.c 
# Where to find workers.properties 
JkWorkersFile conf/extra/workers.properties 
# Where to put jk shared memory 
JkShmFile  logs/mod_jk.shm 
# Where to put jk logs 
JkLogFile  logs/mod_jk.log 
# Set the jk log level [debug/error/info] 
JkLogLevel info 


<VirtualHost *:80> 
     ServerName localhost 
     ServerAdmin [email protected] 
     DocumentRoot /var/www/html 
</VirtualHost> 

<VirtualHost *:80> 
     ServerName geonetwork 
     ServerAdmin [email protected] 
     DocumentRoot /usr/local/tomcat_gn/webapps 

     <Directory "/usr/local/tomcat_gn/webapps"> 
      #Options MultiViews FollowSymLinks 
      Options All 
      AllowOverride all 
      Require all granted 
     </Directory> 

     #LogLevel info ssl:warn 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     JkMount /geonetwork|/* gn_worker 
</VirtualHost> 

<VirtualHost *:80> 
     ServerName geoserver 
     ServerAdmin [email protected] 
     DocumentRoot /usr/local/tomcat_gs/webapps 

     #LogLevel info ssl:warn 
     ErrorLog ${APACHE_LOG_DIR}/error.log 
     CustomLog ${APACHE_LOG_DIR}/access.log combined 
     JkMount /geoserver|/* gs_worker 
</VirtualHost> 

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

Смежные вопросы