/ / ¿Cómo obtener la URL del navegador en la aplicación web Apache-Tomcat? - url-reescritura, apache, httpd.conf, mod-proxy, tomcat

¿Cómo obtener la URL del navegador en la aplicación web Apache-Tomcat? - url-reescritura, apache, httpd.conf, mod-proxy, tomcat

He configurado mi aplicación web usando el conector Apache-Tomcat a través de mod_proxy - vea más abajo.

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

Además, estoy usando subdominios para identificar a los clientes directamente mediante la lectura de la URL; consulte a continuación el ejemplo.

Tipos de cliente1

http://client1.mydomain.com/myapp

Tipos de cliente2

http://client2.mydomain.com/myapp

Ahora, quiero leer la URL y analizar el clientenombre (cliente1 o cliente2). El resto de mi aplicación web se basa en quién es el cliente (por supuesto, después de la autenticación). Pero el problema es que cuando trato de obtener la URL usando getRequestURL de HttpServletRequest, obtengo http://127.0.0.1:8080/myapp en lugar de client1.mydomain o client2.mydomain. Esto, supongo, se debe a que Apache se utiliza como el distribuidor principal y la solicitud a Apache httpd se reenvía a localhost Tomcat.

No quiero cambiar la estructura de la URL (como client1.mydomain.com/client1) ni quiero pedirle a los usuarios la información del cliente a través de la interfaz de usuario. ¿Cómo logro esto?

Respuestas

3 para la respuesta № 1

Resolví este problema usando el conector AJP en lugar 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>

El conector AJP reenvió la solicitud desde apacheto tomcat conservando la URL del navegador (mientras mod_proxy lo cambió a localhost: 8080 / myapp) y, por lo tanto, pude leer y analizar el nombre del cliente.

Ahora puedo representar datos específicos del cliente sin pedirle realmente al usuario su nombre de cliente.