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 条评论
登录 后参与评论

相关文章

来自专栏陈满iOS

iOS下载报错:App Transport Security has blocked a cleartext HTTP

以上方法虽然解决了HTTP不能正常使用的问题,但是苹果提供的安全保障也被关闭了,对于不支持HTTPS协议的网站,可以考虑白名单:

3824
来自专栏PhpZendo

PHP 文件系统完全指南

今天我们将开启一个新的探索旅程,深入到 PHP 文件系统中,系统的学习和掌握 PHP 文件系统的基本使用。

1723
来自专栏你不就像风一样

深入理解跨域SSO原理与技术

​ SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登...

1781
来自专栏丑胖侠

Zookeeper开源客户端Curator之基本功能讲解

简介 Curator是Netflix公司开源的一套Zookeeper客户端框架。了解过Zookeeper原生API都会清楚其复杂度。Curator帮助我们在其基...

3295
来自专栏张戈的专栏

启用WP Super Cache纯代码版本之后的一些优化措施

张戈博客在上个月 28 号启用了 WP Super Cache 代码版,几天下来,虽然小问题不断,但是总体感觉非常不错!不管是前台还是后台,速度都有质的提升,着...

3637
来自专栏格子的个人博客

Mysql 8.0.12压缩包安装教程

以前都是解压缩安装5.7版本的mysql,刚好最近换了电脑需要重装mysql,就去官网下载了新版本8.0.12,整理一下安装步骤。一来备忘,二来如果刚好也能给需...

1832
来自专栏blackpiglet

使用 pip 发布 Python 程序

写过 Python 程序的小伙伴们都知道,需要 import 个非 Python 自带的软件包时,都要用到 pip 这个程序。平时我们都是用 pip,如果我们写...

3122
来自专栏积累沉淀

Java程序员面试题集(86-115)

Java程序员面试题集(86-115) 摘要:下面的内容包括Struts 2和Hibernate的常见面试题,虽然Struts 2在2013年6月曝出高危漏...

2627
来自专栏云计算教程系列

如何在Debian 9上使用mod_rewrite为Apache重写URL

Apache的mod_rewrite模块允许您以更干净的方式重写URL,将人类可读的路径转换为代码友好的查询字符串。它还允许您根据条件重写URL。

1504
来自专栏c#开发者

消息队列(Message Queue)简介及其使用

消息队列(Message Queue)简介及其使用 利用 MSMQ(Microsoft Message Queue),应用程序开发人员可以通过发送和接收消息方...

4798

扫码关注云+社区

领取腾讯云代金券