Назад | Перейти на главную страницу

Почему mod_proxy не любит рекурсию?

Отказ от ответственности: я новичок в mod_proxy и несколько новичок в apache В основном.

У меня очень простой виртуальный хост со следующей конфигурацией:

<VirtualHost *:80>
    ServerName myhost.mydomain


    <IfModule mod_proxy.c>
    ProxyRequests Off

    ProxyPass /mysite http://www.google.com
    ProxyPassReverse /mysite http://www.google.com

    </IfModule>

</VirtualHost>

Когда я иду в http://myhost.mydomain/mysite он отображает ожидаемый результат, то есть домашнюю страницу Google, но не пересылает изображения Google. Когда я смотрю на источник изображения, я вижу, что myhost.mydomain а не Google URI, как ожидалось. Чего не ожидается, так это то, почему изображения не извлекаются mod_proxy и послал ко мне. Как мне сделать mod_proxy "рекурсивный" а-ля mod_rewrite. В том же духе, если я уже знаком с mod_rewrite, зачем возиться с mod_proxy вообще?

Ресурсы Google на странице представлены в виде img src="/images/srpr/logo3w.png" или похожие; это приводит к их извлечению из корня сайта.

Посмотрите, как вы настроили проксирование; /mysite/images/srpr/logo3w.png это запрос, который клиентский браузер должен был бы отправить для получения изображения. Переключиться на..

ProxyPass / http://www.google.com/

и все должно работать.

mod_proxy_html предназначен для изменения путей ссылок для правильной работы в контексте прокси, но не рассчитывайте, что он будет работать правильно для сайта, который вы не контролируете, особенно если построение ссылок выполняется в JavaScript на стороне клиента.

mod_rewrite и mod_proxy служат совершенно разным целям; если вы используете [P] флаг в mod_rewrite тогда вы на самом деле используете mod_proxy, но менее эффективным способом, чем просто настройка ProxyPass.