Eu tenho um servidor frontal com o Apache 2.4.23 implantado + OpenSSL 1.0.2j.
Então eu tenho outro servidor com o Tomcat 7 instalado.
A ideia é que o Apache tenha um VHOST em *: 443, que usa ProxyPass para enviar o pedido via AJP para o servidor Tomcat de acordo com os URLs especificados.
Esse é o meu arquivo vhosts.conf (ele tem configuração SSL, já que não quero usar o arquivo httpd-ssl.conf, pois tenho que mudar muitas coisas nele), de acordo com este site:
##################################################################################################################
# VHOSTS HTTP
# redirect all HTTP to HTTPS (optional)
<VirtualHost *:80>
ServerAlias *
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
##################################################################################################################
# VHOSTS HTTPS
Listen 443
# modern configuration, tweak to your needs
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLProxyCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:c:/ap24/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
# OCSP Stapling, only in httpd 2.3.3 and later
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache "shmcb:c:/ap24/logs/ocsp(128000)"
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile "conf/xin.foo.com/xin.crt"
SSLCertificateChainFile "conf/xin.foo.com/bundle.crt"
SSLCertificateKeyFile "conf/xin.foo.com/xin.key"
# Uncomment the following directive when using client certificate authentication
#SSLCACertificateFile /path/to/ca_certs_for_client_authentication
# HSTS (mod_headers is required) (15768000 seconds = 6 months)
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /bar ajp://X.X.X.X:XXXX/bar/
ProxyPass /bar/ ajp://X.X.X.X:XXXX/bar/bar.html
</VirtualHost>
Agora, como você pode ver, tenho 2 proxypasses de acordo com a URL. Isso é porque eu tenho e "admin" / backend zone e uma zona de usuário. O primeiro proxypass é por Admin Zone e o segundo é para a zona do usuário.
Agora, para esses sites, preciso desses URLs:
ADMINISTRADOR: link
USER: link
Estou usando o servidor Apache em um contexto "local" agora, o que significa que eu não tenho um subdomínio de TLD com o IP público do servidor Apache. Então, na minha máquina local no escritório, editei o arquivo "hosts" em "windows / system32 / drivers / etc" e adicionei a linha:
xin.foo.com Y.Y.Y.Y (which is the IP address of the Apache frontal server).
Dessa forma, eu posso emular da minha máquina o que um público pode acessar da inet.
Disse tudo isso, agora vem a coisa:
Inet people, acessará o link . É isso.
Eu quero " link " para acessar diretamente a zona USER .
E algo parecido com o link , para acessar a zona de back-end ADMIN .
Então, aqui eu acho que são duas coisas a serem levadas em conta:
Talvez eu tenha que deletar as Proxypasses e fazer algum mod_proxy_ajp para isso?
Qual será o caminho certo para fazer isso e como? Eu apreciaria a receita final, já que mod_rewrite e Porxypass não são minha especialidade ... E eu estou convencido de que mesmo esses 2 proxypasses estão errados, mas é o que eles me pegaram.
EDITAR DE ACORDO COM COMENTÁRIOS:
Para sumarizar, tudo está funcionando por enquanto, mas preciso escrever as URLs, conforme explicado anteriormente, para acessar as zonas corretas. O que eu quero é mudar o comportamento do servidor, de acordo com a lógica, e deixar o URL do TLD simples ir para a zona do usuário, e "/ admin" para a zona de backend. Eu adicionei um rewirte de http para https que funciona bem. Agora eu pensei que posso adicionar uma reescrita que diz:
e
Com isso, acho que os projetos da AJP ainda devem funcionar normalmente. E o que seria de um grau A + seria não modificar o URL no navegador, então as pessoas continuam lendo " link " para o real e "oculto" " link ".
Obrigado a todos vocês e com os melhores cumprimentos.
Tags tomcat mod-rewrite apache-2.2 ajp mod-jk