erro de imagem 404 do proxy reverso do apache

erro de imagem 404 do proxy reverso do apache

Eu tenho algum erro com meu proxy reverso do Apache. Atualmente estou fazendo proxy reverso para 4 sites.

  • 1.1.1.1/a
  • 1.1.1.2/b
  • 1.1.1.3/c
  • 1.1.1.4/d

Não estou tendo problemas ao usar o proxy reverso para o site a e b. As imagens são boas e não há problema.

No entanto, quando se trata do site c e d. A imagem não está sendo carregada. No meu access_log, aqui estão os logs.

- - [08/May/2014:10:40:36 +0800] "GET /whatshot_v3/images/promo/img_samplePromo.jpg HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/menu/faq_butt_03.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/banner/text_planprice.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/banner/text_services.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/banner/text_account.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/shortcut/bann_store.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/shortcut/bann_rewards.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/shortcut/bann_idd.gif HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/img_customerService.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_fb.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_tw.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_rss.png HTTP/1.1" 404 1245
- - [08/May/2014:10:40:36 +0800] "GET /images_v3/footer/icon_share.png HTTP/1.1" 404 1245

Acessar a partir do próprio servidor proxy reverso Apache não tem problemas. Ao acessar de fora, o problema ocorre.

Tentei digitar diretamente o URL em outra máquina e a imagem foi carregada.

1.1.1.1 - - [08/May/2014:10:19:00 +0800] "GET **/d/images_v3/footer/icon_share.png** HTTP/1.1" 200 869 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36
1.1.1.1 - - [08/May/2014:10:18:24 +0800] "GET **/images_v3/footer/icon_share.png HTTP/1.1" 404 1245** "htt://1.2.3.4/digi/landing.do" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36"

Como você pode ver, o link do primeiro está funcionando. O do segundo não é.

Quando eu solicito a página normalmente, ela solicitará o segundo link e causará o erro 404, pois não consigo encontrar o caminho.

Se eu digitar diretamente o primeiro link, a imagem será encontrada.

Percebo que os sites c e d são redirecionados ao digitar o link.E essa é a causa do problema.

1.1.1.3/c --> 1.1.1.3/c/index_other.html 
1.1.1.4/d --> 1.1.1.4/d/landing.do

Aqui está minha configuração de proxy reverso do Apache

<VirtualHost *:80>
    #ServerAdmin [email protected]
    #DocumentRoot /www/docs/dummy-host.example.com
    #ServerName dummy-host.example.com
    ErrorLog logs/arp_error_log
    CustomLog logs/arp_access_log common

    ProxyRequests Off

        <Location /a>
                ProxyPass http://1.1.1.1/a
                ProxyPassReverse http://1.1.1.1/a
        </Location>

        <Location /b>
                ProxyPass http://1.1.1.2/b
                ProxyPassReverse http://1.1.1.2/b  
        </Location>

        <Location /c>
                ProxyPass http://1.1.1.3/index_other.html
                ProxyPassReverse http://1.1.1.3/index_other.html
        </Location>

        <Location /d>
            ProxyPass http://1.1.1.4:8080
            ProxyPassReverse http://1.1.1.4:8080
         </Location>

</VirtualHost>

Então, como resolvo isso? Tenho pesquisado mod_rewrite e mod_proxy_html , mas não tive sorte em resolver o problema.

Responder1

Você pode usar contêineres Location separados para as imagens.

Não estou testando isso, mas deve ser mais ou menos isso.

Para /c:

    <Location /c/images_v3>
            ProxyPass http://1.1.1.3/images_v3
            ProxyPassReverse http://1.1.1.3/images_v3
    </Location>

    <Location /c>
            ProxyPass http://1.1.1.3/index_other.html
            ProxyPassReverse http://1.1.1.3/index_other.html
    </Location>

Para /d não tenho certeza do que está acontecendo, talvez haja um redirecionamento em 1.1.1.4:8080 que redirecione tudo para /landing.do ? Neste caso, o seguinte não ajudaria:

    <Location /d/images_v3>
        ProxyPass http://1.1.1.4:8080/images_v3
        ProxyPassReverse http://1.1.1.4:8080/images_v3
     </Location>

    <Location /d>
        ProxyPass http://1.1.1.4:8080
        ProxyPassReverse http://1.1.1.4:8080
     </Location>

informação relacionada