专栏首页coderhuoNginx反向代理,建立Google镜像

Nginx反向代理,建立Google镜像

本文简要介绍基于Nginx反向代理,建立Google镜像的步骤。

1. 准备一个可以访问google的服务器

可以考虑申请一个访问google不受限的云服务器,比如亚马逊。

2. 下载源码

wget https://codeload.github.com/openssl/openssl/zip/OpenSSL_1_1_0e -O OpenSSL_1_1_0e.zip

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
wget http://zlib.net/zlib-1.2.11.tar.gz

git clone https://github.com/nginx/nginx.git
git clone https://github.com/cuber/ngx_http_google_filter_module
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module

pcre版本不要太新,否则后面编译会有问题。

3. 编译安装

进入nginx目录,执行git checkout release-1.13.9选定版本 进入ngx_http_google_filter_module目录,执行git checkout 0.2.0选定版本 进入ngx_http_substitutions_filter_module目录,执行git checkout v0.6.4选定版本

解压其他压缩包后,在nginx根目录下编译安装:

 ./auto/configure --with-pcre=../pcre-8.39 --with-openssl=../openssl-OpenSSL_1_1_0e --with-zlib=../zlib-1.2.11 --with-http_ssl_module --add-module=../ngx_http_google_filter_module --add-module=../ngx_http_substitutions_filter_module

make -j 4

sudo make install

nginx默认安装目录是/usr/local/, 可执行文件/usr/local/nginx/sbin/nginx, 配置文件/usr/local/nginx/conf/nginx.conf

4. 修改nginx配置文件

server {
    server_name localhost;
    listen 80;
    resolver 8.8.8.8;
    location / {
        google on;
    }
}

5. 启动nginx

sudo /usr/local/nginx/sbin/nginx

然后,就可以在浏览器上通过云主机的公网IP地址访问google了。

6. 用域名来访问

目前,我们能通过IP来访问,但是云服务器的IP地址不是固定的,所以, 可以考虑用域名来访问。

域名是之前申请的花生壳的一个免费域名。为了在IP地址变化时动态更新域名对应的IP地址,需要在服务器上定时检测IP地址的变化,并在变化的时候更新域名信息。

这里吐槽下花生壳在Linux下的官方客户端,试了几个版本,折腾了半天,最终还是无法使用。 我们通过下面的脚本来执行IP变化检测,并且在变化的时候更新域名信息。 并加入crontab 任务定时执行。

https://github.com/sigusr1/ph-ddns.git

7. 域名备案???

到这里,ping 域名也能正常ping通,域名对应的IP地址也正确,按理说至此域名已能正常工作。 遗憾的是,通过IP可以正常访问,通过域名就不可以。 在服务端和客户端抓包可以看到,被和谐了,有个“中间人”同时对Server和Client都发送了RST报文。

网络拓扑如下:

报文如下:

后来了解到,可能是因为域名未备案的原因,被墙了。 但是他们怎么实现的呢,通过IP可以访问,通过域名无法访问,猜测是通过HTTP头部的HOST字段来检测的。

8. 参考文档

https://www.meanevo.com/2015/08/20/mirrors-google-on-nginx/

http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

https://github.com/sigusr1/ph-ddns.git

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 虚拟内存探究 -- 第四篇:malloc, heap & the program break

    这是虚拟内存系列文章的第四篇,也是最后一篇。 本文主要介绍malloc和heap相关知识,以便回答上一篇文章结尾提出的一些问题:

    coderhuo
  • TCP连接建立、断开过程详解

    TCP连接建立过程需要经过三次握,断开过程需要经过四次挥手,为什么? 有没有其他的连接建立、断开方式?

    coderhuo
  • Linux控制台重定向方法

    一些嵌入式设备,一般都会留有调试串口,经由RS232/485标准与PC的COM口相连,将打印输出在PC上显示,并可以接收PC端的输入,如下图所示:

    coderhuo
  • 总统败选:希拉里输给了“网络安全”

    喧嚣而抢眼的2016美国总统大选终于落下帷幕了,川普成为美国第45届总统,也算是爆冷吧。毕竟在投票前,预测都是希拉里赢的,广大吃瓜群众也都是押她的。然而随着选区...

    安恒信息
  • Git命令集十六——推送命令 原

    珲少
  • EF大数据批量处理----BulkInsert

    之前做项目的时候,做出来的系统的性能不太好,在框架中使用了EntityFramework,于是就在网上查资料,研究如何提高EF的性能。 在这分享一篇博客 批...

    令仔很忙
  • 解密JavaScript闭包

    译者按: 从最简单的计数器开始,按照需求对代码一步步优化,我们可以领会闭包的神奇之处。

    Fundebug
  • 希拉里克林顿竞选美国总统提出的科技创新战略(全文)

    今天的全球经济是充满不确定性的,竞争异常激烈,这需要国家对科技,创新和创业给予强有力的支持。美国在互联网革命方面领先全世界,今天,科技和互联网几乎改变了美国经...

    点滴科技资讯
  • Spring Cloud OpenFeign:基于 Ribbon 和 Hystrix 的声明式服务调用

    Feign 是声明式的服务调用工具,我们只需创建一个接口并用注解的方式来配置它,就可以实现对某个服务接口的调用,简化了直接使用 RestTemplate 来调用...

    macrozheng
  • Sklearn参数详解—GBDT

    这篇介绍Boosting的第二个模型GBDT,GBDT和Adaboost都是Boosting模型的一种,但是略有不同,主要有以下两点不同:

    张俊红

扫码关注云+社区

领取腾讯云代金券