Nginx反向代理Google

    最近google被墙,工作效率严重下降,baidu不出来东东,刚刚看到CentOS.bz的《Nginx反向代理谷歌》于是自己也搭建了一个,速度杠杠的。有国外vps的朋友可以试试,声明:有风险,IP或者域名有被墙的可能。

    基于《lnmp一键安装包》,将 --with-http_sub_module、ngx_cache_purge-2.1编译到nginx中,如下:

    1. cd ~/lnmp/src
    2. wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
    3. tar xzf ngx_cache_purge-2.1.tar.gz
    4. cd nginx-1.6.1
    5. make clean
    6. ./configure --prefix=/usr/local/nginx --user=www --group=www --add-module=../ngx_cache_purge-2.1 \
    7. --with-http_sub_module --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module \
    8. --with-http_gzip_static_module --with-ld-opt=-ljemalloc
    9. make
    10. mv /usr/local/nginx/sbin/nginx{,$(date +%m%d)}
    11. cp objs/nginx /usr/local/nginx/sbin
    12. service nginx restart
    13. mkdir -p /var/nginx/cache/one
    14. chown -R www.www /var/nginx

    自己签发免费ssl证书,为nginx生成自签名ssl证书(访问时需添加信任。也可以使用第三方签名后的证书,如免费的startssl)

    1. cd /usr/local/nginx/conf
    2. openssl genrsa -out server.key 1024
    3. openssl req -new -key server.key -out server.csr
    4. openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    nginx.conf 配置文件如下(注意: 74.xx.xx.xx替换成域名或者IP):

    1. proxy_cache_path /var/nginx/cache/one  levels=1:2   keys_zone=one:10m max_size=10g;
    2. proxy_cache_key "$host$request_uri";
    3. upstream google {
    4.         server 74.125.239.112:80 max_fails=3;
    5.         server 74.125.239.113:80 max_fails=3;
    6.         server 74.125.239.114:80 max_fails=3;
    7.         server 74.125.239.115:80 max_fails=3;
    8.         server 74.125.239.116:80 max_fails=3;
    9. }
    10. server {
    11.         listen 80;
    12.         server_name 74.xx.xx.xx;
    13.         rewrite ^(.*) https://74.xx.xx.xx$1 permanent;
    14. }
    15. server {
    16. listen 443;
    17. server_name 74.xx.xx.xx
    18. ssl on;
    19. ssl_certificate /usr/local/nginx/conf/server.crt;
    20. ssl_certificate_key /usr/local/nginx/conf/server.key;
    21. location / {
    22.         proxy_cache one;
    23.         proxy_cache_valid  200 302 1h;
    24.         proxy_cache_valid  404 1m;
    25.         proxy_redirect https://www.google.com/ /;
    26.         proxy_cookie_domain google.com 74.xx.xx.xx;
    27.         proxy_pass http://google;
    28.         proxy_set_header Host "www.google.com";
    29.         proxy_set_header Accept-Encoding "";
    30.         proxy_set_header User-Agent $http_user_agent;
    31.         proxy_set_header Accept-Language "zh-CN";
    32.         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";
    33.         sub_filter www.google.com 74.xx.xx.xx ;
    34.         sub_filter_once off;
    35.         }
    36. }

    注解:

    1、监听了80和443端口,可以在Linux自己生成证书。

    2、定义了个upstream google,放了5个谷歌的ip(通过nslookup www.google.com命令获取(yum -y install bind-utils)),如果不这样做,就等着被谷歌的验证码搞崩溃吧。

    3、也设置了反向代理缓存,某些资源不用重复去请求谷歌获取,加快搜索速度

    4、proxy_redirect https://www.google.com/ /; 这行的作用是把谷歌服务器返回的302响应头里的域名替换成我们的,不然浏览器还是会直接请求www.google.com,那样反向代理就失效了

    5、proxy_cookie_domain google.com 74.xx.xx.xx; 把cookie的作用域替换成我们的域名

    6、proxy_pass http://google; 反向代理到upstream google

    7、proxy_set_header Accept-Encoding ""; 防止谷歌返回压缩的内容,因为压缩的内容我们无法作域名替换

    8、proxy_set_header Accept-Language "zh-CN";设置语言为中文

    9、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给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容。还有设置为新窗口打开网站,这个符合我们打开链接的习惯

    10、sub_filter www.google.com 74.xx.xx.xx当然是把谷歌的域名替换成我们的了,注意需要安装nginx的sub_filter模块(编译加上--with-http_sub_module参数)

    参考:https://www.centos.bz/2014/06/nginx-proxy-google/

    Mon Jun 16 19:19:03 CST 2014
    • 本文由 发表于 2014-06-16
    • 转载请务必保留本文链接:https://linuxeye.com/399.html
    Nginx Lua Redis防止CC攻击 Linux

    Nginx Lua Redis防止CC攻击

    Nginx Lua Redis防止CC攻击实现原理:同一个外网IP、同一个网址(ngx.var.request_uri)、同一个客户端(http_user_agent)在某一段时间(CCseconds...
    Keepalived+Nginx架构整理版 Linux

    Keepalived+Nginx架构整理版

    Keepalived介绍 keepalived是一个类似于layer3, 4, 5 交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如...
    Nginx中文域名配置 Linux

    Nginx中文域名配置

    Nginx虚拟主机上绑定一个带中文域名,比如linuxeye.中国,浏览器不能跳转。 why? 因为操作系统的核心都是英文组成,DNS服务器的解析也是由英文代码交换,所以DNS服务器上并不支持直接的中...
    Wordpress优化——利用Nginx fastcgi_cache缓存加速 Linux

    WordPress优化——利用Nginx fastcgi_cache缓存加速

    高并发网站架构的核心原则其实就一句话"把所有的用户访问请求都尽量往前推",即:能缓存在用户电脑本地的,就不要让他去访问CDN。 能缓存CDN服务器上的,就不要让CDN去访问源(静态服务器)了。能访问静...
    匿名

    发表评论

    匿名网友

      • jokimina jokimina

        博主的博客好棒. 可以问下是用的什么模板么.还是自己写的?

        • jokimina jokimina

          在关于中看到了 谢谢博主.