Отказ от ответственности: я новичок в 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
.