跳转至

google: NGINX模块用于创建Google镜像

安装

您可以在任何基于RHEL的发行版中安装此模块,包括但不限于:

  • RedHat Enterprise Linux 7、8、9和10
  • CentOS 7、8、9
  • AlmaLinux 8、9
  • Rocky Linux 8、9
  • Amazon Linux 2和Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-google
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-google

通过在/etc/nginx/nginx.conf的顶部添加以下内容来启用模块:

load_module modules/ngx_http_google_filter_module.so;

本文档描述了nginx-module-google v0.2.4,于2023年6月17日发布。


Gitter

描述

ngx_http_google_filter_module 是一个过滤模块,使得Google镜像的部署变得更加简单。 正则表达式、uri位置和其他复杂配置已经内置。 本地的nginx模块确保了处理cookies、gstatic分数和重定向的效率。 让我们看看设置Google镜像是多么“简单”。

location / {
  google on;
}

什么?你在开玩笑吗? 是的,就是这么简单!

演示网站 https://g2.wen.lu

演示网站

依赖

  1. pcre 正则表达式支持
  2. ngx_http_proxy_module 后端代理支持
  3. ngx_http_substitutions_filter_module 多重替换支持

下载最新源代码

@see http://nginx.org/en/download.html

wget http://nginx.org/download/nginx-1.7.8.tar.gz

克隆ngx_http_google_filter_module

@see https://github.com/cuber/ngx_http_google_filter_module

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

克隆ngx_http_substitutions_filter_module

@see https://github.com/yaoweibin/ngx_http_substitutions_filter_module

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

##### 全新安装 #####
``` bash
#
## 自定义配置nginx
## 将</path/to/>替换为您的真实路径
#
./configure \
  <your configuration> \
  --add-module=</path/to/>ngx_http_google_filter_module \
  --add-module=</path/to/>ngx_http_substitutions_filter_module

从现有发行版迁移
#
## 获取现有nginx的配置
## 将</path/to/>替换为您的真实路径
#
</path/to/>nginx -V
> nginx version: nginx/ <version>
> built by gcc 4.x.x
> configure arguments: <configuration>

#
## 下载相同版本的nginx源代码
## @see http://nginx.org/en/download.html
## 将<version>替换为您的nginx版本
#
wget http://nginx.org/download/nginx-<version>.tar.gz

#
## 配置nginx
## 将<configuration>替换为您的nginx配置
## 将</path/to/>替换为您的真实路径
#
./configure \
  <configuration> \
  --add-module=</path/to/>ngx_http_google_filter_module \
  --add-module=</path/to/>ngx_http_substitutions_filter_module
#
## 如果缺少某些库,您应该使用包管理器安装它们
## 例如:apt-get、pacman、yum ...
#

使用

基本配置

resolver 用于解析域名。

server {
  # ... 服务器配置的一部分
  resolver 8.8.8.8;
  location / {
    google on;
  }
  # ...
}

Google 学术

google_scholar 依赖于 google,因此 google_scholar 不能独立使用。 如今,Google学术已从 http 迁移到 https,并且支持 ncr,因此不再需要Google学术的 tld

location / {
  google on;
  google_scholar on;
}

Google 语言

可以通过 google_language 设置默认语言,如果未设置,默认语言将为 zh-CN

location / {
  google on;
  google_scholar on;
  # 设置语言为德语
  google_language de;
}

支持的语言如下所示。

ar    -> 阿拉伯语
bg    -> 保加利亚语
ca    -> 加泰罗尼亚语
zh-CN -> 中文(简体)
zh-TW -> 中文(繁体)
hr    -> 克罗地亚语
cs    -> 捷克语
da    -> 丹麦语
nl    -> 荷兰语
en    -> 英语
tl    -> 菲律宾语
fi    -> 芬兰语
fr    -> 法语
de    -> 德语
el    -> 希腊语
iw    -> 希伯来语
hi    -> 印地语
hu    -> 匈牙利语
id    -> 印度尼西亚语
it    -> 意大利语
ja    -> 日语
ko    -> 韩语
lv    -> 拉脱维亚语
lt    -> 立陶宛语
no    -> 挪威语
fa    -> 波斯语
pl    -> 波兰语
pt-BR -> 葡萄牙语(巴西)
pt-PT -> 葡萄牙语(葡萄牙)
ro    -> 罗马尼亚语
ru    -> 俄语
sr    -> 塞尔维亚语
sk    -> 斯洛伐克语
sl    -> 斯洛文尼亚语
es    -> 西班牙语
sv    -> 瑞典语
th    -> 泰语
tr    -> 土耳其语
uk    -> 乌克兰语
vi    -> 越南语

爬虫排除

任何搜索引擎的爬虫不允许抓取Google镜像。 默认的 robots.txt 如下所示,已经内置。

User-agent: *
Disallow: /
如果将 google_robots_allow 设置为 on,则 robots.txt 将被替换为Google本身的版本。
  #...
  location / {
    google on;
    google_robots_allow on;
  }
  #...

上游配置

upstream 可以帮助您避免名称解析成本,减少Google机器人检测的可能性,并通过某些特定服务器进行代理。

upstream www.google.com {
  server 173.194.38.1:443;
  server 173.194.38.2:443;
  server 173.194.38.3:443;
  server 173.194.38.4:443;
}

代理协议

默认情况下,代理将使用 https 与后端服务器进行通信。 您可以使用 google_ssl_off 强制某些域名回退到 http 协议。 这在您想通过另一个网关代理某些域名而不使用SSL证书时非常有用。

#
## 例如
## 我想像这样代理域名 'www.google.com'
## vps(hk) -> vps(us) -> google
#

#
## vps(hk) 的配置
#
server {
  # ...
  location / {
    google on;
    google_ssl_off "www.google.com";
  }
  # ...
}

upstream www.google.com {
  server < vps(us) 的ip >:80;
}

#
## vps(us) 的配置
#
server {
  listen 80;
  server_name www.google.com;
  # ...
  location / {
    proxy_pass https://www.google.com;
  }
  # ...
}

GitHub

您可以在nginx-module-google的GitHub 仓库中找到此模块的其他配置提示和文档。