最近百度有点火,看到一个笑话:
--“你百度一下会死吗?”
-- “会!”
--“那你Google一下不行吗?”
-- “不行...”
于是,想着折腾一个 防污染DNS + SNI Proxy 方便翻墙,具体在下篇博客里介绍,这里就贴一下 Nginx 反代 google 的配置吧
Nginx 配置
1. HTTP 反代 HTTPS
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | server { 	server_name www.example.com;         location / { 		proxy_pass https://www.google.com/; 		  # 这里使用https连接google的服务器,尝试使用http,包括使用ip地址,都失败。google各种跳转https。 		  # 如果实在想用http,好像有参数可以配置回落http的,找不到怎么配置的了。。。 		proxy_redirect https://www.google.com/ /; 		proxy_cookie_domain google.com www.example.com; 		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"; 		  # 这里设置cookie,这里是别人给出的一段,必要时请放上适合你自己的cookie                   # 设置这个可以避免一些情况下的302跳转,如果google服务器返回302 redirect,那么浏览器被跳转到google自己的域名,那就没的玩了                 proxy_set_header X-Real-IP $remote_addr; 		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 		subs_filter  http://www.google.com http://www.example.com; 		subs_filter  https://www.google.com http://www.example.com; 		  # 这里替换网页中的链接,因为我们的镜像站是http的,所以上面顺便把协议也一起替换了 		  # subs_filter 可以多次使用,相反,下面代码块里的 sub_filter 只能指定一条替换规则 	} } | 
2. HTTPS 反代 HTTPS
至于SSL证书,有一些免费的提供商,比如startssl,letsencrypt之类的
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | server{ 	listen 80;  	server_name www.example.com;  	return 301 https://$host$request_uri; } server {         listen   443 ssl;         ssl on;  	ssl_certificate /path/to/fullchain.pem; 	ssl_certificate_key /path/to/privkey.pem; 	server_name www.example.com;         location / { 		proxy_pass https://www.google.com/; 		  # 这里使用https连接google的服务器,尝试使用http,包括使用ip地址,都失败。google各种跳转https。 		  # 如果实在想用http,好像有参数可以配置回落http的,找不到怎么配置的了。。。 		proxy_redirect https://www.google.com/ /; 		proxy_cookie_domain google.com www.example.com; 		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"; 		  # 这里设置cookie,这里是别人给出的一段,必要时请放上适合你自己的cookie                   # 设置这个可以避免一些情况下的302跳转,如果google服务器返回302 redirect,那么浏览器被跳转到google自己的域名,那就没的玩了          	proxy_set_header X-Real-IP $remote_addr; 		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 		sub_filter  www.google.com www.example.com; 		  # 这里替换网页中的链接,因为我们的镜像站是https的,所以只需替换域名就好了 		sub_filter_once off;                   # 对于 sub_filter 来说,默认 sub_filter_once on;也就是对整个网页只进行一次替换 	} } | 
参考资料:
https://hack0nair.me/2014-10-25-how-to-setup-reverse-proxy-by-nginx/
还有方便的一键部署项目(需要编译nginx):
简称STFW