【发布时间】:2016-09-28 23:02:21
【问题描述】:
我真的希望有人能帮我解决这个问题,因为我已经做了好几天了,我觉得我快疯了!
我正在尝试做对我来说听起来很简单的事情。我想在租用的专用机器上使用 Apache 设置代理服务器,这样我就可以绕过我的 ISP 无意义的防火墙。我知道我可以使用 VPN,但我不想这样做,原因希望在我解释我想要的详细信息后会变得清楚。
首先,我不希望每个请求都使用代理服务器。仅适用于被我的 ISP 阻止的网站。
假设我尝试访问blockedsite.com/path/to/resource 但它失败了。然后,我只想将地址栏中的 URL 更改为 proxy.myserver.com/proxy/blockedsite.com/path/to/resource 并让 Apache 处理一切,为我提供无缝体验。也就是说,
- ProxyPassReverse 应修改响应标头以用于代理服务器。
- 应修改响应正文中的所有 URL 以使用代理
这是我目前所拥有的:
<VirtualHost *:80>
ServerName proxy.myserver.com
ProxyRequests off
ProxyPass /proxy/ http://
ProxyPassReverse /proxy/ http://
ProxyPassReverse /proxy/ https://
ProxyHTMLURLMap http:// /proxy/
ProxyHTMLURLMap https:// /proxy/
<Location /proxy/>
ProxyPassReverse /
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|</title>|</title><meta name='referrer' content='no-referrer' />|ni"
ProxyHTMLEnable On
#ProxyHTMLURLMap / /app1/
RequestHeader unset Accept-Encoding
Order allow,deny
Allow from all
</Location>
</VirtualHost>
此设置非常适合不会尝试将我重定向到其他地方的 URL。但是,例如,如果我尝试访问proxy.myserver.com/proxy/facebook.com,我仍然会在客户端被重定向到https://www.facebook.com,而不是我想要的https://proxy.myserver.com/proxy/www.facebook.com。更奇怪的是,当我设置自己的测试站点时,除了将我重定向到 HTTPS 地址之外什么都不做,HTTPS 的 ProxyPassReverse 规则似乎确实有效……但当我尝试访问 Facebook 或 Google 等网站时却不行.
我认为没有理由对我的问题喋喋不休,我正在寻找的东西非常简单:透明、无缝的体验!除了在地址栏中的 URL 前面粘贴 proxy.myserver.com/proxy/ 之外,我不应该做任何其他事情来让它工作。然而事实并非如此,尽管搜索了一个多星期,我在网上没有找到任何可以帮助我解决这个问题的东西。就好像我是宇宙中唯一一个想要使用 Apache 创建一个简单代理的人,该代理实际上可以用作防火墙绕过器。
请问有人可以帮我吗?!甚至只是告诉我这一切都错了,应该放弃并安装 Squid 什么的??
【问题讨论】: