Aplicativo JBoss por trás do apache ajp proxy com subdomínio - contexto duplicado

1

No meu aplicativo, estou criando um cenário padrão em que o aplicativo da web Java é implantado no JBoss com o proxy do apache adiantado. O webapp é acessível a partir do contexto / esp para que o URL direto seja (mas eu desativei o HTTP para o Jboss, apenas para o AJP):

http://1.2.3.4:8080/esp

Agora, criei subdomínio e tentei mover o proxy pelo contexto raiz do apache. Então eu gostaria de apache para proxy:

https://mysubdomain.domain.com -> ajp -> Jboss /esp context app

Acredito que estou perdendo algo óbvio com minha configuração, pois somente o contexto do aplicativo raiz está acessível, e o restante do URL tem o contexto dulicated que termina com 404. Por exemplo, a solicitação é intermediada por proxy assim:

https://mysubdomain.domain.com/css/somecss.css -> ajp -> /esp/esp/css/somecss.css

A configuração do Apache é assim:

<VirtualHost 1.2.3.4:80>
        ServerName mysubdomain.domain.com
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost 1.2.3.4:443>
        ServerName mysubdomain.domain.com

        ProxyPass / ajp://localhost:8009/esp/
        ProxyPassReverse / ajp://localhost:8009/esp/

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/mantis>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>


        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/esp.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>

        SSLEngine on

        SSLCertificateFile    /var/keys/server.crt
        SSLCertificateKeyFile /var/keys/server.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>
</IfModule>

Além disso, quando adiciono proxies adicionais, tudo funciona:

        ProxyPass /esp/ ajp://localhost:8009/esp/
        ProxyPassReverse /esp/ ajp://localhost:8009/esp/

Só que o aplicativo pode ser acessado no apache em ambos os contextos: / e /esp , enquanto eu quero apenas o root. Como posso consertar isso?

    
por kamil 12.12.2014 / 21:25

1 resposta

0

Já tive problemas parecidos com o que você tem aqui e finalmente encontrei minha configuração relevante (adaptada à configuração que você postou):

ProxyRequests Off
ProxyPass / ajp://localhost:8009/esp/
ProxyPassReverse / http://mysubdomain.domain.com/esp/
ProxyPassReverse / https://mysubdomain.domain.com/esp/
ProxyPassReverseCookiePath "/esp" "/"

Inicialmente tive problemas com o ProxyPassRevers, mas também com o caminho do cookie, talvez você pudesse precisar de uma diretiva ProxyPassReverseCookieDomain (no meu caso eu não precisava disso).

    
por 24.04.2015 / 21:09