Problema de redirecionamento de HTML com o Apache2

1

Estou enfrentando um problema com o ProxyPass no meu servidor Apache no Ubuntu. Eu configurei o Apache para lidar com hosts virtuais no meu servidor. Há um aplicativo com execuções no servidor e usa as portas 8001 8002. Preciso fazer algo como www.example.com/demo/origin para exibir o conteúdo que veria quando visitar www.example.com:8000 . O conteúdo a ser exibido é um host de páginas HTML.

Esta é a seção da configuração do host virtual que tem problemas

ProxyPass /demo/vader http://www.example.com:8001/  
ProxyPassReverse /demo/vader http://www.example:8001/  

ProxyPass /demo/skywalker http://www.example.com:8002/  
ProxyPassReverse /demo/skywalker http://www.example.com:8002/

Agora, quando visito example.com/demo/skywalker , vejo a primeira página da porta 8002, digamos a página login.html .

O segundo deve ter sido www.example.com/demo/skywalker/userAction.html , em vez disso, o servidor mostra www.example.com:8000/login.html . Nos logs de erro, vejo algo como:

[Mon Nov 11 18:01:20 2013] [debug] mod_proxy_http.c(1850): proxy: HTTP: FILE NOT FOUND /htdocs/js/demo.72fbff3c9a97f15a4fff28e19b0de909.min.js  

Eu não tenho nenhuma pasta htdocs no sistema.

Este é apenas um problema ao visualizar .html páginas. Caso contrário, esse problema não ocorre.

Quando visito localhost:8001 , ele mostrará todo e qualquer conteúdo sem erros ou problemas.

www.example.com/demo/skywalker exibe uma página da Web separada

www.example.com/demo/origin exibe uma página da Web diferente

e

www.example.com/demo/vader exibe uma página da Web diferente.

Eu também tentei usar mais um tipo de combinação,

<Location /demo/origin/>
  ProxyPass http://localhost:8000/
  ProxyPassReverse http://localhost:8000/
  ProxyHTMLURLMap http://localhost:8000/ /
</Location>

Isso também falha.

Eu apreciaria muito se alguém puder me ajudar a resolver esse problema.

    
por Vijit Jain 13.11.2013 / 01:40

1 resposta

0

Então, no que diz respeito ao apache, você também tem essas configurações?

# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost On

A razão pela qual eu pergunto é que o erro é baseado em um arquivo JavaScript que não está sendo carregado. E o CORS não permitirá que o JavaScript carregue conteúdo do mesmo domínio. E ProxyPreserveHost preservaria example.com ao fazer uma solicitação para www.example.com:8001 ou www.example.com:8002

EDIT: Tentando um exemplo mais específico. Sugiro que você refaça sua lógica de proxy & tente isso.

# Settings for adding a trailing slash to the URL
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(demo)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1/ [R=301,L]

# Settings for Apache Reverse Proxying
<IfModule mod_proxy.c>

  # Proxy specific settings
  ProxyRequests Off
  ProxyPreserveHost On

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

  ProxyPass /demo/vader http://www.example.com:8001/  
  ProxyPassReverse /demo/vader http://www.example:8001/  

  ProxyPass /demo/skywalker http://www.example.com:8002/  
  ProxyPassReverse /demo/skywalker http://www.example.com:8002/

</IfModule>
    
por 13.11.2013 / 01:57