Configurare Apache, Tomcat, mod_jk e mod_rewrite per servire tomcat dal livello superiore

Sto cercando di impostare l'applicazione java come componente principale di un nuovo sito.

Ho alcune risorse statiche che vorrei servire da Apache, quindi ho installato Apache e Mod_jk, con le seguenti regole,

JkMount /java_app* ajp13 JkUnmount /*static/* ajp13 RewriteEngine On RewriteRule ^/$ /java_app/ [L,PT] 

Lavoratori file e tutto sta funzionando gonfiarsi. Quando vado a http://www.example.com/ , ottengo il file di indice per l'applicazione java a causa della regola di riscrittura. Se cerco in giro per il sito, ho ancora la mia applicazione java a causa di mod_jk, come http://www.example.com/java_app/view/1/ .

Il problema: quando torno a http://www.example.com , perdo completamente tutte le informazioni sulla session. Se avessi effettuato l'accesso, sono disconnesso e i collegamenti da lì stanno avvicinandosi a jsessionids.

Come posso risolvere questo problema? È questo il modo giusto per colbind apache e tomcat, o c'è un modo migliore?

EDIT:

Per rispondere alla prima risposta,

Ancora un po 'bloccato. Quando carichi il firebug, vedo questo quando vado a /

 Set-Cookie JSESSIONID=8D63C9682E39B81F669E277ED07542E1; Path=/javaapp 

Mentre sfoggo intorno all'applicazione java, vedo che lo stesso jsessionid rimane con me – firebug dice che sto inviando le intestazioni di richiesta.

Quando ho colpito / ancora, ho questo nella risposta,

 Set-Cookie JSESSIONID=5DC9F39CE85AB1E71B8D87EB9D485FE9; Path=/javaapp 

Quindi suppongo Apache in avanti su mia richiesta senza le mie informazioni sul cookie, quindi Tomcat mi dà una nuova? Posso dire a mod_rewrite di dire ex. ^/$ /javaapp/;jsessionid={cookie} ?

  • Perché un segnale SIGHUP a httpd uccide il process tomcat?
  • Utilizzo della memory di Tomcat Solr
  • Compressione HTTP in IIS 6.0 che causa problemi con determinati utenti
  • Apache mod_proxy con Tomcat 8.5 utilizzando http2
  • Configurazione di nginx come tomcat / uWSGI proxy
  • Che cosa consuma tanta memory?
  • Come abilitare mod_info in Apache?
  • Come configurare Apache / Tomcat per confidare le Autorità di certificazione interne per le richieste https da server a server
  • 5 Solutions collect form web for “Configurare Apache, Tomcat, mod_jk e mod_rewrite per servire tomcat dal livello superiore”

    Non utilizzare mod_jk2 (che comunque è deprecato), ma utilizzare mod_proxy con ProxyPass e ProxyReversePass . Molto più facile da configurare, anche la tua exception per i contenuti statici può essere espressa facilmente:

     ProxyPass /statics ! ProxyPass / http://localhost:8080 ProxyPassReverse / http://localhost:8080 

    L'inconveniente è ovviamente che se l'applicazione Java vuole leggere l'indirizzo IP del client (e altre informazioni sui client), otterrà invece l'indirizzo di Apache mentre è il proxy di riproduzione. Per queste situazioni, sarà necessario utilizzare mod_jk

    Sospetto che sia un problema del path dei cookie. Per confermare, è ansible triggersre il debugger HTTP e analizzare il traffico HTTP.

    Impostare worker.worker1.sticky_session = 1

    Dico uso mod_jk, come è stato creato specialmente per tomcat ajp e il suo well mantained (each anno l'aggiornamento con nuove feture)

    Grazie a entrambi. Accetto che è un problema di path del cookie o un problema con Apache che non invia in avanti l'informazione dei cookie o qualcosa del genere.

    Ho finito per rendere il tomcat webapp ROOT, che ha causato i problemi del path del cookie per andare via, oltre a rimuovere la radice di context di / javapp dagli URL un bel lato interessano. Ho finito con mod_proxy_ajp, perché era facile da configurare, e ho trovato qualche documentazione di shibboleth che ha indicato che questa è l'opzione migliore.

    Sembra che tutto questo spazio è voodoo, e ognuno si presenta con la propria soluzione, che possa anche trovare qualcosa che funziona e correre con esso …

    Questo può essere eseguito utilizzando mod_header nella configuration che ha funzionalità mod_rewrite simile, ma viene utilizzato per modificare le intestazioni di http.

    Per cambiare tutti i routes cookie da / javaapp a /

     Header edit Set-Cookie "^(.*; Path=)/javaapp/?(.*)" $1/$2 

    Oppure, se voleste cambiare il path del cookie interamente da / javaapp per dire / my_java_app

     Header edit Set-Cookie "^(.*; Path=)/javaapp/?(.*)" $1/my_java_app/$2 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.