Apache + MOD_JK: Reescrevendo URLs + ProxyPassing por AJP

1

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:

link

##################################################################################################################
# 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:

  • Pampes proxy da AJP
  • Possibilidade de reescrever mod em primeiro lugar com parametters ou algo assim, para forçar os proxypasses já configurados a funcionarem? Como o aplicativo montado no servidor Tomcat, espera que alguns parâmetros (? App = personal) mostrem a zona do usuário. E sem params = admin zone.

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:

"SE link ENTÃO link "

e

"SE link ENTÃO link "

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.

    
por Lightworker 10.11.2016 / 14:25

0 respostas