免责声明:我对此非常陌生,并且总体上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
呢?
答案1
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
。