使用nginx搭建Google反向代理并替换响应内容
最近由于天气原因,Google在国内的访问受到了严重的干扰。我们可以在国外服务器上配置Google的反向代理来实现。
配置Google反向代理.
nginx是一个强大的反向代理服务器。要实现反向代理功能只需要修改nginx的配置文件就可以了。
这是我的配置文件(没有使用SSL,懒得折腾了)
server {
listen 80;
server_name 【你的域名】;
location / {
proxy_redirect http://www.google.com/ /;
proxy_cookie_domain google.com 【你的域名】;
proxy_pass http://173.194.127.48;
proxy_set_header Accept-Encoding "";
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Accept-Language "zh-CN";
proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";
sub_filter www.google.com 【你的域名】;
sub_filter_once off;
}
}
测试并重载nginx配置,试试输入你的域名,应该已经可以正常显示Google的首页了。
替换响应内容.
你已经成功反向代理了Google,这时你可以向网页里添加一些奇怪的东西,或者统计代码,甚至广告。
nginx自带了sub_filter功能,但是这个语句在整个配置文件中只能使用一次。所以我们需要使用ngx_http_substitutions_filter_module这个第三方模块。
如果你的nginx是从软件仓库安装的,只需要执行(debian/ubuntu)
sudo apt-get install nginx-full
如果你的nginx是编译安装的,请参考这篇文章。
比如说我们想要实现这样的效果:

我们只需要在上面的配置文件中加这样一句:
subs_filter </form> '<br><center>蛤蛤蛤蛤蛤蛤蛤</center></form>';
意思是将
</form>
替换为:
<br><center>这是一个蛤蛤蛤蛤蛤蛤蛤</center></form>
也就是说将
<br><center>这是一个蛤蛤蛤蛤蛤蛤蛤</center>
加在</form>标签之前。
统计,广告代码也同理,只需要找到需要加入代码的位置,替换即可。
9 Comments
CE.BB.CAT
楼主哇,替换好像不怎么管用了呢, 我的配置:
用 Chrome Ctrl+U 看着 script 这个字符串并没有按照预期被替换为ASD
有时间了看一下可以吗?先行谢过
Frank
有几种可能性
1. subs_filter_types里没有加上text/html
2. 可能服务器开启了gzip,而subs_filter不能处理经过压缩的内容
另外 sub_filter和 subs_filter是两个模块,所以最后一句once off应该是没有任何作用的。
落红逐轻裙
非常感谢!很直观的替换例子,之前一直想到重定向去了。。
技术杂谈
谢谢!!为了替换页面搞得焦头烂额。

猫箱内の巴托拉
目测很有用的样子,回头试试
Revgatail
Frank
收多少?450?
Revgatail
你说的
Frank
那就来收吧