Apache como proxy reverso para o tomcat (executando jenkins)

3

Eu configurei o apache para funcionar como um proxy reverso para o tomcat que está executando o jenkins-CI. Eu posso acessar o site externamente, exceto quando eu entro no jenkins, ele redireciona para o meu nome de host lan, e é claro que ele falha fora da minha rede. Depois disso, posso digitar manualmente o endereço original no navegador e ele funcionará bem até que eu tenha que fazer o login novamente.

Gostaria de saber se isso é um problema no Jenkins ou na minha configuração de proxy do Apache / Tomcat.

Jenkins também relata na página de gerenciamento que minha configuração de proxy não está correta, mas não conta mais.

Configuração do Apache VirtualHost:

<VirtualHost *:80>
    ServerName jenkins.outsideaddress
    ServerAlias ci.outsideaddress jenkins.insideaddress ci.insideaddress
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Além disso, os módulos proxy e proxy_http são carregados (de acordo com apachectl -M )

    
por Esa Varemo 19.09.2012 / 16:14

3 respostas

1

Finalmente consegui resolver o problema (pelo menos acho que sim)!

Eu me deparei com um problema semelhante ao tentar configurar o repositório nexus maven para funcionar bem em uma configuração de proxy httpd apache semelhante. Então, por acaso, encontrei um problema enviado ao rastreador de problemas, onde ele criou algumas URLs incorretamente.

Nos comentários, uma correção sugerida foi adicionar

ProxyPreserveHost On

para o host virtual no conf do httpd, onde estão as outras diretivas de configuração do proxy. Eu não vejo mais o problema.

    
por 12.01.2013 / 14:53
3

Tente adicionar isso depois de ProxyPassReverse. O outsideaddress é o seu FQDN externo.

RewriteEngine on
RedirectMatch ^/(.*)$ http://outsideaddress/$1
    
por 19.09.2012 / 16:31
1

No Jenkins, procure em "Gerenciar Jenkins" e role até o campo "Jenkins URL". Mude isso para jenkins.outsideaddress.

Para acesso interno, configure seu DNS da LAN para resolver jenkins.outsideaddress para jenkins.insideaddress, seja através de uma renomeação ou via CNAME. Você também pode configurar um catchall nos endereços internos que serão redirecionados para jenkins.outsideaddress.

    
por 19.09.2012 / 16:21