Configure o Proxy Reverso do IIS 7 para conectar-se ao TeamCity Tomcat

12

Temos um servidor Web IIS 7 configurado e gostaríamos de criar um proxy reverso para uma instalação do TeamCity usando o Tomcat na mesma máquina.

O site do servidor IIS é https://somesitee eu gostaria que o TeamCity aparecesse como https://somesite/teamcityredirecionado para http://localhost:portnumber.

Instalei a extensão de reescrita de URL do IIS e o roteamento de solicitação de aplicativo para tentar configurar um proxy reverso, mas não consigo fazê-lo funcionar.

A resposta mais próxima que encontrei é uma pergunta antiga do StackOverflow: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https
que infelizmente não tem nenhum funcionamento exemplo.

Pesquisei bastante, mas não consigo encontrar um exemplo relevante.

Qualquer ajuda é apreciada!

Cynicszm
fonte
Notei também que, usando esse método, alguns botões do TeamCity levam a 'http' em vez de 'https' ... talvez não exista uma boa maneira de fazer isso. Embora possa ser reescrita, isso significa que a primeira chamada com todos os dados é enviada em texto sem formatação? hmmm
tofutim 21/10

Respostas:

12

Depois de passar cerca de 4 horas tentando configurar o SSL para o TeamCity (e usando as respostas neste segmento), consegui fazer isso funcionar usando a opção de farm de servidores.

  • Configurei um farm de servidores TeamCity que incluía meu servidor TeamCity na 127.0.0.1 usando a porta 8080 e permiti que as Regras de roteamento de aplicativos criassem uma regra de roteamento de farm de servidores correspondente.

  • Criei um site chamado TeamCitySecureProxy, que configurei com um certificado autoassinado. Nas ligações, configurei apenas https / 443 (sem http / 80).

  • A parte que estava faltando: - Em seguida, cliquei no nó 'TeamCity' em 'Farms de servidores' no IIS, escolha 'Proxy' no painel 'Farm de servidores' e marquei o 'host de reconfiguração reversa nos cabeçalhos de resposta'.

Agora tenho um ponto de extremidade seguro para acessar minha instalação simples do http TeamCity.

Warren Edwards
fonte
1
Recebo "502 - o servidor Web recebeu uma resposta inválida enquanto atuava como um gateway ou servidor proxy". - você encontrou isso em sua jornada e, em caso afirmativo, como foi corrigido?
precisa
Esta solução funcionou para mim. O host de reconfiguração reversa é necessário, caso contrário, alguns botões levam a http em vez de https. Obrigado Warren
tofutim
Há alguns problemas com o servidor nuget nesse cenário. :(
tofutim 22/10
1

Você também pode usar um conector para fazer isso.

Existe o conector ISAPI antigo (redirecionador) disponível diretamente no Apache ou também um novo disponível no RiaForge (este parece mais fácil de ser executado).

http://tomcatiis.riaforge.org/

Henry Fastow
fonte
1
e os *.jararquivos? Eu instalei isso no meu IIS 7.5, mas ele serve apenas para *.jspconteúdo ... :( Eu tenho um vaadin-6.6.2.jararquivo na raiz do meu aplicativo da Web implantado. Acho que o BonCode AJP Connector lida apenas com JSPs, posso ver a Boncode-Tomcat-JSP-Handleropção "Mapeamentos de manipulador" de IIS, mas não está definido o que deve ser feito com os *.jararquivos ...
Sk8erPeter 27/11
1

Verifique se o proxy ARR está ativado na GUI do IIS. Você provavelmente deseja preservar o cabeçalho do host (pode ser necessário editar o applicationHost.config manualmente ou usar o appcmd para defini-lo) e regravar o host novamente nas opções do cabeçalho de resposta ativadas também, para que o navegador faça solicitações e veja respostas que correspondam ao Host de certificado SSL.

  1. Site IIS em 443 (e 80 provavelmente?) - ouvindo todas as solicitações (não especifique o nome do host)
  2. observe todos os caminhos recebidos: corresponda ao URL (.*)
  3. procure o caminho do TeamCity, preserve o restante do caminho: a condição {URL} corresponde^teamcity(/.*)?
  4. reescrever com caminho preservado: ação reescrever, http://localhost:port/{C:1}
  5. acrescentar string de consulta marcada
  6. e pare de processar outras regras provavelmente verificadas

Eu acho que deveria fazê-lo.

<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
fonte
0

Acabei de fazer isso sozinho e acabei de publicar um blog sobre isso.

Parece que você instalou todos os requisitos, agora só precisa configurar o servidor:

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

Bronumski
fonte
Não há alegria em usar sua postagem. Eu já havia tentado a opção ServerFarm. Eu preciso fazê-lo funcionar apenas em SSL, o IIS não está vinculado a 80 apenas 443. Também preciso fazer o site funcionar conforme descrito na pergunta root / teamcity e não há detalhes suficientes na postagem para fazê-lo funcionar dessa maneira. Obrigado pelo link embora
Cynicszm