URL errado do navegador do proxy Apache

URL errado do navegador do proxy Apache

Estou usando o seguinte VirtualHoste mod_proxy para fazer proxy de todas as solicitações do meu subdomínio 'api' para meu serviço da web Java, localizado em webapps/webservicemeu Tomcat.

<VirtualHost *:80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass /webservice http://localhost:8080
    ProxPassReverse / http://localhost:8080
</VirtualHost>

Meu problema é que se eu digitar 'api.mydomain.com', sou redirecionado para 'api.mydomain.com/webservice' e recebo um erro 404 porque "webservicewebservice" não está disponível.

Alguém sabe o que fazer?

Solução: Embora eu já tenha tentado essa solução antes, Stony estava certo! O problema no meu caso foi que, mesmo que eu não tivesse mudado nada ali, tive que reiniciar o Tomcat para que funcionasse. Reiniciei o Apache várias vezes, mas isso não mudou nada.

Responder1

Não sei se entendi bem o seu problema, mas se você não quiser webservicena sua URL. Em seguida, defina seu Proxy Pass como /.

<VirtualHost *::80>
    ServerName api.mydoamin.com
    ProxyRequests Off
    ProxyPreserveHost On

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    ProxyPass / http://localhost:8080/webservice/
    ProxPassReverse / http://localhost:8080/webservice/
</VirtualHost>

Ou você deseja executar seu webservice nesse domínio? E você não quer o redirecionamento?

Responder2

Depois de alguns testes e muitos erros, finalmente encontrei a seguinte solução.

Eu configurei meu host virtual apache assim:

<VirtualHost *:80>
    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny, allow
        Allow from all
    </Proxy>                                                                        
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    ServerName api.mydomain.com
</VirtualHost>

Agora ele apenas faz proxy de todas as solicitações para api.mydomain.commeu Tomcat na porta 8080 sem apontar para um diretório específico.

Então adicionei isso a /etc/tomcat7/server.xml:

<Host name="api.mydomain.com" appBase="webapps">
    <Context path="" docBase="webservice" />
</Host>

Como ProxyPreserveHostestá ativado em meu host virtual Apache, o Tomcat obtém o nome do host da solicitação original e é capaz de decidir qual conteúdo entregar.

Com appBase="webapps"o conteúdo parece ser entregue no diretório raiz, mesmo que esteja localizado em outro lugar.

informação relacionada