/ / Comment obtenir l'URL du navigateur dans une application Web Apache-Tomcat? - réécriture d'URL, apache, httpd.conf, mod-proxy, tomcat

Comment obtenir l'URL du navigateur dans une application Web Apache-Tomcat? - réécriture d'URL, apache, httpd.conf, mod-proxy, tomcat

J'ai configuré mon application Web à l'aide du connecteur Apache-Tomcat via mod_proxy - voir ci-dessous.

<IfModule mod_proxy.c>
ProxyPass /myapp http://127.0.0.1:8080/myapp
ProxyPassReverse /myapp http://127.0.0.1:8080/myapp
</IfModule>

De plus, j'utilise des sous-domaines afin d'identifier les clients directement en lisant l'URL - voir l'exemple ci-dessous.

Types Client1

http://client1.mydomain.com/myapp

Types Client2

http://client2.mydomain.com/myapp

Maintenant, je veux lire l'URL et analyser le clientnom (client1 ou client2). Le reste de mon application Web dépend de l'identité du client (bien sûr, après l'authentification). Mais le problème est, lorsque je tente d’obtenir une URL à l’aide de getRequestURL de HttpServletRequest, j’obtiens http://127.0.0.1:8080/myapp au lieu de client1.mondomaine ou de client2.mondomaine. Cela, je suppose, est dû au fait qu’Apache a été utilisé comme répartiteur principal et que la demande adressée à Apache httpd a été transmise à l’hôte local Tomcat.

Je ne veux pas changer la structure de l’URL (comme client1.mondomaine.com/client1), ni demander à l’utilisateur les informations sur le client via l’interface utilisateur. Comment y parvenir?

Réponses:

3 pour la réponse № 1

J'ai résolu ce problème en utilisant le connecteur AJP au lieu de mod_proxy.

<Location /myapp>
ProxyPass ajp://localhost:8009/myapp
ProxyPassReverse ajp://localhost:8009/myapp
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</Location>

Le connecteur AJP a transféré la demande d'Apachetomcat en préservant l’URL du navigateur (alors que mod_proxy l’a modifiée en localhost: 8080 / myapp) et j’ai donc pu en lire et en analyser le nom du client.

Maintenant, je peux générer des données spécifiques au client sans demander à l'utilisateur son nom de client.