Usando o Apache httpd para redirecionar o caminho do contexto?

3

Gostaria de usar o proxy http://localhost:1006/ as http://example.com/public/ para o mundo externo. Aqui está minha configuração:

RewriteEngine On
# Append a slash if necessary
RewriteRule ^/public$ public/ [R,L]

# Request headers: Replace http://localhost:1006/ with http://example.com/public/
ProxyPass /public/ http://localhost:1006/

# Response headers: Replace http://example.com/ with http://example.com/public/
ProxyPassReverse /public/ http://example.com/

ProxyPassReverseCookiePath / /public/
<Location /public>
    Require all granted
</Location>

Isso funciona bem para reescrever cabeçalhos, mas o servidor ainda acha que seu caminho de contexto é / em vez de /public/ , portanto, quando constrói URLs para incorporação no JSON, eles estão incorretos. O Httpd apenas reescreve cabeçalhos, não o JSON, então não faz nada sobre isso.

Eu não quero que o httpd reescreva o JSON (li que o processo não é confiável). Percebi que o cabeçalho Host enviado pelo httpd para o servidor contém o nome do host externo, que permite ao servidor corrigir essa parte da URL. Existe algum outro cabeçalho que eu poderia definir que instruiria o servidor a usar um caminho de contexto diferente?

Significando, há algo que eu possa fazer no httpd que alteraria o caminho de contexto do servidor sem alterar a configuração / código do servidor diretamente?

    
por Gili 31.07.2013 / 17:16

2 respostas

2

Resposta curta: não, não realmente. Normalmente, seu aplicativo de backend precisa ter uma opção para configurar sua própria URL raiz para que possa gerar links apropriados. Se o seu aplicativo de backend estiver hospedado em algo como o Tomcat, basta instalá-lo de forma que esteja disponível no mesmo caminho relativo (para que, por exemplo, você esteja fazendo proxy de example.com/public/ a localhost:1006/public/ ).

    
por 31.07.2013 / 17:27
0

Você poderia tomar uma facada em reverso reescrever a saída, mas é muito, muito mais fácil deixar o aplicativo back-end acha que vive em / public como você estará jogando bosta uma toupeira com conteúdo reescreve para o seu futuro previsível, se você siga o caminho de reescrita.

    
por 04.12.2014 / 00:06