最近百度有点火,看到一个笑话:
--“你百度一下会死吗?”
-- “会!”
--“那你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