Configure el proxy inverso IIS 7 para conectarse a TeamCity Tomcat

12

Tenemos un servidor web IIS 7 configurado y nos gustaría crear un proxy inverso para una instalación de TeamCity usando Tomcat en la misma máquina.

El sitio del servidor IIS es https://somesitey me gustaría que TeamCity aparezca como https://somesite/teamcityredireccionamiento http://localhost:portnumber.

He instalado la extensión de reescritura de URL de IIS y el enrutamiento de solicitud de aplicación para intentar configurar un proxy inverso pero no puedo hacerlo funcionar.

La respuesta más cercana que encontré es una vieja pregunta de StackOverflow: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https
que desafortunadamente no funciona ejemplo.

He buscado bastante pero parece que no puedo encontrar un ejemplo relevante.

Cualquier ayuda es apreciada!

Cynicszm
fuente
También noté que al usar este método, algunos botones en TeamCity conducen a 'http' en lugar de 'https' ... tal vez no haya una buena manera de hacerlo. Si bien puede reescribirse, ¿eso significa que la primera llamada con todos los datos se envía en texto sin formato? hmmm
tofutim

Respuestas:

12

Después de pasar aproximadamente 4 horas tratando de configurar SSL para TeamCity (y usando las respuestas en este hilo), logré que esto funcionara utilizando la opción de granja de servidores.

  • Configuré una granja de servidores TeamCity que incluía mi servidor TeamCity en 127.0.0.1 usando el puerto 8080, y permití que las Reglas de enrutamiento de aplicaciones crearan una regla de enrutamiento de granja de servidores correspondiente.

  • Luego creé un sitio web llamado TeamCitySecureProxy que configuré con un certificado autofirmado. En los enlaces, solo configuré https / 443 (no http / 80).

  • La parte que me faltaba: - Luego hice clic en el nodo 'TeamCity' en 'Granjas de servidores' en IIS, elegí 'Proxy' en el panel 'Granja de servidores' y marqué el 'Host de reescritura inversa en los encabezados de respuesta'.

Ahora tengo un punto final seguro para acceder a mi instalación simple http TeamCity.

Warren Edwards
fuente
1
Obtengo "502: el servidor web recibió una respuesta no válida mientras actuaba como puerta de enlace o servidor proxy". - ¿Encontró esto en su viaje, y si es así, cómo lo solucionó?
mcintyre321
Esta solución funcionó para mí. El host de reescritura inversa es necesario; de lo contrario, algunos botones conducen a http en lugar de https. Gracias Warren
tofutim
Hay algunos problemas con el servidor nuget en este escenario. :(
tofutim
1

También podría usar un conector para hacerlo.

Existe el antiguo conector ISAPI (redirector) disponible de Apache directamente o también hay uno nuevo disponible de RiaForge (este parece más fácil de ejecutar).

http://tomcatiis.riaforge.org/

Henry Fastow
fuente
1
¿Qué pasa con los *.jararchivos? Instalé esto en mi IIS 7.5, pero solo sirve *.jspcontenido ... :( Tengo un vaadin-6.6.2.jararchivo en la raíz de mi aplicación web desplegada. Creo que BonCode AJP Connector maneja solo JSP, puedo ver una Boncode-Tomcat-JSP-Handleropción en "Asignaciones de controladores" de IIS, pero no establece lo que se debe hacer con los *.jararchivos.
Sk8erPeter
1

Asegúrese de que el proxy ARR esté habilitado en la GUI de IIS. Probablemente desee conservar el encabezado del host (puede que necesite editar applicationHost.config a mano, o usar appcmd para configurar este) y reescribir el host en las opciones de encabezado de respuesta habilitadas también, para que el navegador haga solicitudes y vea respuestas que coincidan con el SSL cert host.

  1. Sitio de IIS en 443 (¿y 80 probablemente?) - escuchando todas las solicitudes (no especifique el nombre de host)
  2. mira todas las rutas entrantes: coincide con la URL (.*)
  3. busque la ruta de TeamCity, conserve el resto de la ruta: la condición {URL} coincide^teamcity(/.*)?
  4. reescribir con ruta conservada: reescribir acción, http://localhost:port/{C:1}
  5. agregar cadena de consulta marcada
  6. y dejar de procesar otras reglas probablemente verificadas

Creo que eso debería hacerlo.

<rule name="Demo Rule" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{URL}" pattern="^teamcity(/.*)?" />
    </conditions>
    <action type="Rewrite" url="http://localhost:8080/{C:1}" />
</rule>
andrewbadera
fuente
0

Acabo de hacer esto yo mismo y acabo de publicar un blog al respecto.

Parece que ha instalado todos los requisitos, ahora solo necesita configurar el servidor:

http://bronumski.blogspot.com/2010/10/host-teamcity-in-iis7.html

Bronumski
fuente
No es un placer usar tu publicación. Ya había probado la opción ServerFarm. Necesito que funcione solo en SSL, IIS no está limitado a 80 solo 443. También necesito que el sitio funcione como se describe en la pregunta root / teamcity y no hay suficientes detalles en la publicación para que funcione de esa manera. Sin embargo
Cynicszm