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 № 1Resolví 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.