ошибка изображения обратного прокси-сервера apache 404

ошибка изображения обратного прокси-сервера apache 404

У меня какая-то ошибка с моим обратным прокси-сервером Apache. В настоящее время я делаю обратный прокси-сервер для 4 веб-сайтов.

  • 1.1.1.1/а
  • 1.1.1.2/б
  • 1.1.1.3/с
  • 1.1.1.4/д

У меня нет проблем при обратном прокси на сайты a и b. Изображения хорошие и нет проблем.

Однако, когда дело доходит до веб-сайта c и d. Изображения не загружаются. В моем access_log, вот логи.

- - [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

Доступ с самого сервера Apache reverse proxy не имеет проблем. При доступе извне возникают проблемы.

Я попробовал напрямую ввести URL-адрес на другом компьютере, и изображение загрузилось.

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"

Как видите, ссылка в первом случае рабочая, а во втором — нет.

Когда я запрашиваю веб-страницу обычным образом, она запрашивает вторую ссылку и вызывает ошибку 404, так как не удается найти путь.

Если я введу непосредственно первую ссылку, изображение будет найдено.

Я заметил, что при вводе ссылки происходит перенаправление на веб-сайты c и d. Это и есть причина проблемы.

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

Вот моя конфигурация обратного прокси-сервера 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>

Итак, как мне решить эту проблему? Я исследовал mod_rewrite и mod_proxy_html, но безуспешно.

решение1

Вы можете использовать отдельные контейнеры Location для изображений.

Я это не проверял, но это должно быть более или менее то, что нужно.

Для /с:

    <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>

Для /d я не совсем уверен, что происходит, может быть, есть перенаправление на 1.1.1.4:8080, которое перенаправляет все на /landing.do ? В этом случае следующее не поможет:

    <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>

Связанный контент