Buenas!, veréis, me ha tocado la tarea de modernizar una aplicación de la edad de piedra y me estoy topando con algunos baches. Me explico:
Tengo una serie de servidores de aplicaciones tomcat con la siguiente estructura:
(partner1 - tomcatServer1)
http://myServerIp1:8080/ ->tomcat index
http://myServerIp1:8080/webapp1 ->webapp1(main)
http://myServerIp1:8080/webapp2 ->webapp2
(partner2 - tomcatServer2)
http://myServerIp2:8080/ ->tomcat index
http://myServerIp2:8080/webapp1 ->webapp1(main)
http://myServerIp2:8080/webapp2 ->webapp2
http://myServerIp2:8080/webapp3 ->webapp3
Como podéis ver, se aprecian una serie de inconveninetes:
Lo primero el uso de una ip publica por cada servidor. esto es un problema si quiero un certificado firmado por una CA ademas de los problemas de seguridad que implican dejar visible la IP. No obstante este es un problema para mas adelante ya que la cosa no empieza aquí.
El segundo es que cada servidor Tomcat contiene varias aplicaciones y hay que servir todas como se pueda. No parece que sea un problema serio, en realidad no deberia serlo
Hablamos de servidores físicos independientes con aplicaciones tomcat, asi que lo que se ha propuesto es usar un servidor aparte usando nginx como proxy inverso que redireccione usando subdominios a cada servidor especifico. Así debería quedar la estructura final:
(partner1 - tomcatServer1)
http://partner1.myDomain.com/ ->webapp1(main)
http://partner1.myDomain.com/webapp2 ->webapp2
(partner2 - tomcatServer2)
http://partner2.myDomain.com/ ->webapp1(main)
http://partner2.myDomain.com/webapp2 ->webapp2
http://partner2.myDomain.com/webapp3 ->webapp3
Una vez conseguido esto, tocaría pelearse con el tema del uso de ssl, pero repito, es algo que dejaremos para otro día ya que ni siquiera he conseguido ser capaz de hacer un proxy_pass de forma correcta a una aplicación tomcat... ni al propio index de tomcat!!
![toma [tomaaa]](/images/smilies/nuevos2/tomaa.gif)
(me carga solo el texto, parece que no es capaz de cargar la hoja de estilos) aparte de otros problemas que he visto que trataremos mas adelante.
Básicamente la idea es sustituir las ips por un dominio que diferencie la aplicación principal de cada cliente con el subdominio como se ejemplifica mas arriba.
Por supuesto, mi objetivo principal no era ver el index de tomcat, sin embargo he llegado a ese punto porque cuando intentaba cargar la aplicación me encontraba con una bellísima página en blanco, sin errores aparentes... la nada. Pensé que era culpa de haber sido un poco bruto y haber hecho directamente un proxy_pass directo a la aplicación, así que lo cambié directamente a tomcat y ahí me di cuenta de lo comentado.
Buscando por internet, una de las sugerencias ya respondidas era hacer que tomcat hiciera un vps por aplicación, lo cual es interesante ya que me permitiria definir directamente varios location estando seguro de que funcionaria cada aplicación... Pero probando solo con la aplicación principal el resultado volvía a ser la pantalla blanca de la incertidumbre.
Necesito vuestra ayuda y, a pesar de todo lo explicado arriba, no quiero una solución al conjunto entero del problema, por lo menos iré pasito a pasito. Lo primero hacer que cargue bien tomcat, y para ello he dejado tomcat tal como estaba, sin virtual hosts, y ademas he tumbado las aplicaciones para evitar distracciones
Es decir, por ahora voy a intentar primero que funcione la siguiente estructura:
(partner1 - tomcatServer1)
http://myServerIp1:8080/ ->tomcat index
http://partner1.myDomain.com/ ->tomcat index
Y este sería mi archivo correspondiente de nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html index.htm index.nginx-debian.html;
server_name partner1.myDomain.com;
location / {
proxy_pass http://myServerIp1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
try_files $uri $uri/ =404;
}
}
Si alguno usa debian 10, verá que es una pequeña modificación del fichero que viene por defecto.