proxy reverso - entendendo a passagem do proxy - apache mod_proxy

proxy reverso - entendendo a passagem do proxy - apache mod_proxy

estou executando o Tomcat no meu servidor Linux e quero usar um proxy reverso para isso. Depois de ler o manual no Apache para mod_proxy, eu realmente não entendi o /path no proxypass.

faço um pequeno exemplo. o diretório do meu tomcat é /tomcat/webapp. Então esta seguinte configuração está correta?:

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ProxyRequests Off
ProxyPass /tomcat/webapp         http://127.0.0.1:8080
ProxyPassReverse /tomcat/webapp  http://127.0.0.1:8080
</VirtualHost> 

eu ficaria grato, alguém com experiência pode me ajudar.

Responder1

Teoricamente, seja qual for ProxyPassa diretiva que você escolher, ela funcionará, mesmo se você optar por proxy http://example.com:8080/webapp/como http://example.com/foo/bar/baz/.

Entretanto, se sua aplicação usa caminhos absolutos em hiperlinks, é melhor usar o mesmo caminho URI em ambos.Apacheegatoou você terá problemas como emessa questão. Então:

  • se seu aplicativo estiver bem escrito, escolha seu URL favorito e ajuste a implantação do webapp no ​​Tomcat para adequá-lo.
  • se o seu aplicativo estiver mal escrito (por exemplo, tiver alguns caminhos codificados como emessa questãoajusta aApachepath para se ajustar ao caminho de implantação codificado.

De qualquer forma você deve usar:

ProxyPass "/path/to/webapp/" "http://127.0.0.1:8080/path/to/webapp/"

PS: Já que aparentemente você querexecute o Tomcat em duas portas, é melhor informar ao webapp que ele está sendo proxy e que a porta 8443é acessada por SSL:

<Connector port="8080"
           proxyName="example.com"
           proxyPort="80"
           redirectPort="443" />
<Connector port="8443"
           proxyName="example.com"
           proxyPort="443"
           scheme="https" secure="true" />

portanto, o webapp não gerará redirecionamentos inúteis de porta 8443para porta 443.

informação relacionada