为什么 mod_proxy 不喜欢递归?

为什么 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呢?

答案1

Google 页面上的资源采用img src="/images/srpr/logo3w.png"或类似的形式;这导致它们从网站的根目录获取。

看看您是如何配置代理的;/mysite/images/srpr/logo3w.png这是客户端浏览器需要发送的获取图像的请求。切换到..

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

并且一切都应该正常工作。

mod_proxy_html旨在改变链接路径,使其在代理上下文中正常运行,但不要指望它能够为您无法控制的站点正常工作,特别是如果任何链接构建都是在客户端 javascript 中完成的。

mod_rewritemod_proxy服务于完全不同的目的;如果您使用[P]中的标志,mod_rewrite那么您实际上是在利用mod_proxy,但效率不如仅仅配置ProxyPass

相关内容