使用反向代理服务器时,后端服务器会回到代理服务器或更改URL

作为一个学习练习,以便更多地了解反向代理。 我决定使用我的私有云服务器作为反向代理服务器,并尝试绕过企业防火墙(当我在工作时)让我自己访问Gmail。

我想出了下面的代理configuration(请不要介意方括号):

 SSLProxyEngine on
 ProxyRequestclosures
 ProxyViaclosures

 [代理 *]
    命令否认,允许
    全部否认
    允许来自xxx.xxx.xxx
 [/代理]

 ProxyPreserveHost打开

 ProxyPass / qqq https://www.google.com/accounts/ServiceLogin?service=mail
 ProxyPassReverse / qqq https://www.google.com/accounts/ServiceLogin?service=mail

 ProxyPass / qqqqq http://mail.google.com/mail
 ProxyPassReverse / qqqqq http://mail.google.com/mail

上述configuration的结果如下:

  1. 当我导航到myserver.com/qqq时,后端服务器(Google)只是更改URL并将我redirect到google.com。 虽然我有“ProxyPreserveHost在”

  2. 当我导航到myserver.com/qqqqq时,Google会301回到我的代理服务器,它再次将我redirect到Google,最后在循环中结束。

我在这里阅读了一些post在stackoverflow,但不能从他们提取任何有用的信息:

https://stackoverflow.com/questions/5277107/apache-reverse-proxy-changes-url

https://stackoverflow.com/questions/6385638/proxy-pass-follow-redirect-on-server

https://stackoverflow.com/questions/1144286/how-to-tell-apache-in-reverse-proxy-mode-to-intercept-or-trap-302-responses-fro

我在这里的问题是:

  1. 如何防止Google更改url,而是透明地显示内容

  2. 我能做些什么才能在代理服务器和Google之间的301循环中结束

如果您认为我错过了/遗漏/误解了某些东西,请告诉我

谢谢Alex

我已经通过下面的代码做到了这一点。 你可以尝试一下…

ProxyPreserveHost On <Proxy *> AddDefaultCharset off Order deny,allow Deny from all Allow from all </Proxy> ProxyPass /google http://www.google.com/ ProxyHTMLURLMap http://www.google.com /google <Location /google> ProxyPassReverse / ProxyHTMLInterp On ProxyHTMLURLMap / /google RequestHeader unset Accept-Encoding </Location>