Salve ragazzi,
ho un piccolo problema che non riesco a comprendere. Non mi considero un esperto..perdonatemi se dico ca...te.

Ho un server, su cui è stata installata un'applicazione che necessita di tomcat. Inoltre sono stati creati due contesti con questa applicazione, una per test e l'altra per la produzione (futura).

apache e tomcat comunicano con mod_proxy (in questo caso ajp).

Mi è stato richiesto di configurare i due accessi con due dns separati, ovvero dns1.it/produzione e dns2.it/test.

Sul sistema ho trovato un file con dentro due virtual host per le relative suite e le relative direttive ProxyPass ProxyPassReverse fuori dai virtualhost gia configurati.

In questa maniera le due suite sono raggiungibili da:

dns1.it/produzione
dns1.it/test
dns2.it/produzione
dns2.it/test

mentre il risultato desiderato dovrebbe essere

dns1.it/produzione
dns2.it/test

Prima di mettere mani sul server, ho creato una piccola installazione con httpd e tomcat, replicando la stessa configurazione ma utilizzando gli example di tomcat.

Inserendo le direttive Proxy* fuori dai virtual host, ho lo stesso comportamento del server di produzione, se invece le inserisco all'interno del relativo virtual host, ottengo il risultato desiderato.

Tornando al server, ho questo file di configurazione:

ProxyPass         /produzione  ajp://localhost:8009/produzione
ProxyPassReverse  /produzione  ajp://localhost:8009/produzione

<VirtualHost *:80>
ServerAdmin email
ServerName dns1.it
DocumentRoot /var/www/html
DirectoryIndex index.htm index.html
Options FollowSymLinks
ErrorLog /var/log/httpd/errors.log
CustomLog /var/log/httpd/web_access.log combined
LogLevel error
Alias /produzione "/opt/tomcat/webapps/produzione"
<Directory "/opt/tomcat/webapps/produzione/">
....
</Directory>
</VirtualHost>

ProxyPass         /test  ajp://localhost:8009/test
ProxyPassReverse  /test  ajp://localhost:8009/test


<VirtualHost *:80>
ServerAdmin email
ServerName dns2.it
DocumentRoot /var/www/html
DirectoryIndex index.htm index.html
Options FollowSymLinks
ErrorLog /var/log/httpd/errors.log
CustomLog /var/log/httpd/web_access.log combined
LogLevel error
Alias /test "/opt/tomcat/webapps/test/"
<Directory "/opt/tomcat/webapps/test/">
...
</Directory>
</VirtualHost>

Oltre al fatto che le direttive ProxyPassReverse sono sbagliate (https://httpd.apache.org/docs/2.4/mod/mod_proxy_ajp.html), se inserisco le direttive all'interno del relativo virtual host ottengo una separazione con i dns, ma in compenso ottengo un bel "bad request......". Sui log non sono riuscito a trovare nulla di utile (anche con livello debug). Ho provato a modificare le direttive proxypassreverse in:

ProxyPassReverse /produzione http://dns1.it/produzione

senza avere risultato.
Ho provato ad utilizzare il mod_proxy_http invece di ajp, senza risultato. Ne ho provate tante..senza risultato, sempre il "bad request".

Non riesco a capire da cosa dipende.
Idee?

Grazie in anticipo e scusate la lunghezza.

Rispondere a