Eu tenho uma pergunta "simples" que provavelmente pode ser respondida por você em segundos;)
Eu configurei um servidor web apache (v2.2), este servidor apache serve como balanceador com "mod_jk" habilitado. 2 aplicativos diferentes são hospedados neste servidor, chamados de "baixo" e "alto". Os servidores tomcat que estou usando são servidores V6.0x.
Aí vem o httpd.conf do apache (abstract):
# Load mod_jk module
LoadModule jk_module modules/mod_jk-1.2.30-httpd-2.2.3.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# loadbalancer contains the first application that may be clustered (runs on more tomcat instances/servers)
JkMount /high/* loadbalancer
# webworker contains the second application that runs in a single tomcat instance
JkMount /low/* webworker
Como você pode ver, existem dois mapeamentos definidos. O primeiro "high" vai para o loadbalancer (2 servidores de aplicativos "worker1" e "worker2", veja worker.properties abaixo). O segundo resolve para "baixo" e vai para o webworker (apenas outra instância do tomcat neste servidor).
Aí vem o worker.properties:
# Define worker list
worker.list=worker1,worker2,loadbalancer,webworker
# Set properties for worker1 (ajp13, http=8080, https=8443)
# Note: worker1 runs on the same machine as the serving apache webserver
worker.worker1.type=ajp13
worker.worker1.host=appserver1.example.com
worker.worker1.port=8009
worker.worker1.lbfactor=1
# Set properties for worker2 (ajp13, http=8080, https=8443)
# Note: worker2 runs on a different machine
worker.worker2.type=ajp13
worker.worker2.host=appserver2.example.com
worker.worker2.port=8010
worker.worker2.lbfactor=2
# Set properties for webworker (ajp13, http=9090, https=9443)
# Note: webworker runs on the same machine as the serving apache webserver
worker.webworker.type=ajp13
worker.webworker.host=appserver1.example.com
worker.webworker.port=8010
# Set properties for load balancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker1, worker2
Então, aqui está a minha pergunta:
Como posso configurar que todas as solicitações para o mapeamento "baixo" sejam reescritas para "https"? A segunda aplicação "baixa" deve ser executada completamente segura.
i.e. chamando " link " leva o servidor apache a reescrever isso para " link ".
Isso é possível com "mod_rewrite"? Onde devo colocar o arquivo de certificado? O certificado está configurado no tomcat-config (server.xml) ou no apache-config (ou talvez em ambos os arquivos de configuração)?
Thx pela sua ajuda:)
Encontrou uma solução:
Bruno me ajudou, então esta é minha configuração de trabalho (coloquei a configuração em um arquivo adicional chamado httpd-vhosts.conf):
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName appserver1.example.com:443
SSLEngine on
SSLCertificateFile "conf/ssl.crt/server.crt"
SSLCertificateKeyFile "conf/ssl.key/server.key"
JkMount /low/* webworker
</VirtualHost>
</IfModule>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName appserver1.example.com
JkMount /high/* loadbalancer
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/low(.*) https://appserver1.example.com/low$1 [R,L]
</IfModule>
</VirtualHost>