在Ubuntu 16.04 VPS上为Google.com设置Nginx反向代理

本教程介绍了为Google搜索引擎配置Nginx反向代理的步骤。

在像中国这样的世界上某些国家和地区,Google搜索引擎被阻止。 在这个信息时代,搜索引擎是知识的在线门户,而Google是提供高质量搜索结果的排名第一的搜索引擎。 我们相信 自由获取知识是一项基本而重要的人权。 知识是人类潜力,自由和机会的基础,每个人都应免费获得知识,不受任何限制或限制

Nginx是流行的Web服务器以及反向代理。 反向代理是代表另一台服务器的代理。 如果您在另一个国家/地区拥有可以免费访问Google.com的VPS或云服务器,则可以在VPS或云服务器上为Google.com设置Nginx反向代理。 当您在浏览器地址栏中输入自己的域名时,反向代理将为您获取Google.com和Google搜索结果。 VPS和云服务器现在很便宜。

要设置反向代理,我们需要一个名为的Nginx模块 ngx_http_google_filter_module 旨在帮助代理Google.com。 该模块依赖于另一个名为 ngx_http_substitutions_filter_module。 它们都是开源的第三方模块,我们将不得不使用这两个模块手动编译Nginx。 完成后,剩下要做的就是在Nginx服务器块配置文件中添加一些简单的指令并重新加载。

本教程将向您展示如何在Ubuntu 16.04 VPS上进行设置。 因此,让我们开始吧。

1.备份Nginx配置文件

编译并安装Nginx之后,原始Nginx配置文件将被覆盖。 您可以使用以下命令将主配置文件和服务器阻止文件备份到您的主目录。 代字号代表您的主目录。

cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~

2.添加官方Nginx存储库

本教程将在撰写本文时演示如何编译最新的Nginx主线版本1.11.2。 Ubuntu 16.04存储库具有Nginx 1.10。 我们添加了官方的Nginx存储库,如下所示。

首先获取Nginx GPG密钥,并将其导入到Ubuntu 16.04系统。

wget http://nginx.org/keys/nginx_signing.key

sudo apt-key add nginx_signing.key

然后为Nginx创建一个源列表文件。

sudo nano /etc/apt/sources.list.d/nginx.list

将以下两行添加到文件中。 的 deb-src 行允许我们使用以下命令下载Nginx源程序包: apt source 命令。

deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

按Ctrl + O保存文件。 按Ctrl + X关闭文件。 然后更新本地包索引。

sudo apt update

现在,Nginx官方存储库已添加到Ubuntu 16.04。

3下载Nginx源码包

我们将做一个 nginx 目录位于主目录下以存储Nginx源,然后cd进入该目录。

mkdir ~/nginx && cd ~/nginx

使用以下命令下载Nginx源码包:

sudo apt install dpkg-dev

sudo apt source nginx

检查下载的文件。

ls ~/nginx/

输出:

nginx-1.11.2                               nginx_1.11.2-1~xenial.dsc
nginx_1.11.2-1~xenial.debian.tar.xz        nginx_1.11.2.orig.tar.gz

4.下载两个第三方模块

安装git工具。

sudo apt install git

克隆 ngx_http_google_filter_modulengx_http_substitutions_filter_module 来自Github的存储库。

git clone https://github.com/cuber/ngx_http_google_filter_module.git

git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module.git

5.编辑Nginx编译规则

编辑Nginx编译规则文件。

sudo nano ~/nginx/nginx-1.11.2/debian/rules

config.status.nginx: config.env.nginx 部分。 在CFLAGS中添加以下两行。 更换 username 使用您的实际用户名。 这两行指定了 ngx_http_google_filter_module ngx_http_substitutions_filter_module 模块。

--add-module=/home/username/nginx/ngx_http_substitutions_filter_module 
--add-module=/home/username/nginx/ngx_http_google_filter_module

本教程将这两个模块下载到 /home/username/nginx 目录。 如果您使用root帐户,则替换 /home/username/root。 因为根用户的主目录是 /root

请注意,您需要在后面添加反斜杠 --with-ld-opt="$(LDFLAGS)" 如下面的屏幕截图。 如果不这样做, –添加模块 编译Nginx时,您添加的行将被忽略。

现在保存并关闭文件。

6.开始编译!

确保您位于Nginx源目录中。

cd ~/nginx/nginx-1.11.2/

安装依赖项以构建我们的Nginx deb包。

sudo apt build-dep nginx

现在,使用以下命令来构建deb软件包。

sudo dpkg-buildpackage -b

喝杯咖啡,等待几分钟。 在512M Digital Ocean Droplet上,此构建过程耗时约3分钟。 完成后,其中将有7个deb文件 〜/ nginx / 目录。 我们只需要安装 nginx_1.11.2-1~xenial_amd64.deb 要么 nginx_1.11.2-1~xenial_i386.deb软件包,具体取决于您的OS体系结构。 其他的是Nginx动态模块包和调试包。 如果愿意,也可以安装它们。

如果您以前已经安装过Nginx,那么现在是时候删除旧版本,然后再安装新版本了。

sudo apt remove nginx nginx-common nginx-full

cd ~/nginx

sudo dpkg -i nginx_1.11.2-1~xenial_amd64.deb

要么

sudo dpkg -i nginx_1.11.2-1~xenial_i386.deb

现在让我们启动Nginx。

sudo systemctl start nginx

如果您看到以下错误消息。

Failed to start nginx.service: Unit nginx.service is masked.

然后取消屏蔽nginx并再次发出启动命令。

sudo systemctl unmask nginx

请注意,Nginx进程可能以用户身份运行 nginx 要么 www-data。 可以通过在其中编辑第一行来更改 /etc/nginx/nginx.conf 文件。 只要确保Nginx与PHP-FPM以同一用户身份运行即可。

现在检查Nginx的配置参数。

sudo nginx -V

如果最后看到以下文本,则两个模块已成功添加到Nginx。

--add-module=/home/username/nginx/ngx_http_substitutions_filter_module --add-module=/home/username/nginx/ngx_http_google_filter_module

7.配置Nginx反向代理

在此步骤中,我们将首先从Let’s Encrypt获取并安装免费的TLS / SSL证书,以保护访问者正在通过我们的反向代理进行搜索。 然后,我们配置反向代理。

这是非常重要的! 未加密的Google镜像可能会被中国的防火墙封锁!

在下面创建一个新的服务器块配置文件 /etc/nginx/conf.d。 更换 search.your-domain.com 与您的首选域名。

sudo nano /etc/nginx/conf.d/search.your-domain.com.conf

将以下文本粘贴到文件中。

server {
   listen 80;
   server_name search.your-domain.com;

   root /usr/share/nginx/html;

   location ~ /.well-known/acme-challenge {
      allow all;
   }
}

保存并关闭文件。 测试Nginx配置并重新加载。

sudo nginx -t

sudo systemctl reload nginx

现在,在您的DNS设置中,将域名指向Ubuntu 16.04 VPS的IP地址。 之后,从官方PPA安装certbot客户端。 python-certbot-nginx 是Certbot Nginx插件。

sudo apt install software-properties-common
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot python-certbot-nginx

然后,我们可以使用此单行代码获取并安装免费的TLS / SSL证书。 替换电子邮件地址和域名。

sudo certbot --authenticator webroot --installer nginx -w /usr/share/nginx/html/ --agree-tos --redirect --staple-ocsp -d search.your-domain.com --email your-email-address

现在,如果您输入 search.your-domain.com 在您的Web浏览器中,您将被重定向到HTTPS。 如果您使用Amazon Web Services(AWS)或Google Cloud Platform(GCP),请确保防火墙设置中允许HTTPS通信。

ngx_http_mirror_module

让我们将Nginx配置为充当Google.com的反向代理。

sudo nano /etc/nginx/conf.d/search.your-domain.com.conf

要为Google启用反向代理,只需将以下指令复制并粘贴到服务器部分。

resolver 8.8.8.8;

location / {
   google on;
   google_scholar on;
}

保存并关闭文件。 测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx。

sudo systemctl reload nginx

现在,在浏览器地址栏中,输入您的域名。 您应该会看到Google搜索! 尝试搜索一些单词。 这是我的Google反向代理: https://search.linuxbabe.com。 (此演示反向代理不再公开可用。)

用于Google搜索的Nginx反向代理

优化

如果Nginx始终联系同一台Google服务器,则Google可以检测到您正在使用某些程序进行搜索。 如果检测到,将要求您输入验证码以验证您是人类。 为了防止被检测到,我们可以在Nginx服务器块配置文件中添加上游指令。

upstream www.google.com {
  server 172.217.0.228:443;
  server 172.217.3.4:443;
  server 172.217.4.196:443;
  server 172.217.4.132:443;
  server 216.58.219.228:443;
  server 216.58.192.4:443;
  server 216.58.194.196:443;
  server 216.58.218.100:443;
  server 216.58.219.36:443;
  server 216.58.194.68:443;
  server 216.58.221.132:443;
  server 216.58.221.228:443;
  server 216.58.203.4:443;
  server 216.58.197.100:443;
  server 216.58.199.100:443;
}

server {
   listen 80;
   ........
   ........
}

server {
   listen 443 ssl http2;
   ......
   ......
}

这些是Google的一些IP地址。 您始终可以通过查找Google特定国家/地区域的A记录来找到可用的IP地址,如下所示:

nginx反向代理Google

保存文件并重新加载Nginx。 从现在开始,Nginx将以循环方式从这些IP地址获取Google搜索结果。

要以其他语言显示Google,请使用 google_language 指示。

location / {
    google on;
    google_scholar on;
    google_language "en";
}

这将使用英语。 支持的语言如下。

ar    -> Arabic
bg    -> Bulgarian
ca    -> Catalan
zh-CN -> Chinese (Simplified)
zh-TW -> Chinese (Traditional)
hr    -> Croatian
cs    -> Czech
da    -> Danish
nl    -> Dutch
en    -> English
tl    -> Filipino
fi    -> Finnish
fr    -> French
de    -> German
el    -> Greek
iw    -> Hebrew
hi    -> Hindi
hu    -> Hungarian
id    -> Indonesian
it    -> Italian
ja    -> Japanese
ko    -> Korean
lv    -> Latvian
lt    -> Lithuanian
no    -> Norwegian
fa    -> Persian
pl    -> Polish
pt-BR -> Portuguese (Brazil)
pt-PT -> Portuguese (Portugal)
ro    -> Romanian
ru    -> Russian
sr    -> Serbian
sk    -> Slovak
sl    -> Slovenian
es    -> Spanish
sv    -> Swedish
th    -> Thai
tr    -> Turkish
uk    -> Ukrainian
vi    -> Vietnamese

为了防止Nginx在运行时被较新的版本替代 sudo apt upgrade 命令,可以阻止它升级。

sudo apt-mark hold nginx

总是欢迎提出意见,问题和建议。 如果您认为这篇文章有用,请订阅我们的免费新闻通讯,或在Google +,Twitter或喜欢我们的Facebook页面上关注我们。

Sidebar