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, выпущенный 17 июня 2023 года.
Описание
ngx_http_google_filter_module — это фильтрующий модуль, который значительно упрощает развертывание зеркала Google.
Регулярные выражения, uri-локации и другие сложные конфигурации уже встроены.
Родной модуль nginx обеспечивает эффективность обработки cookies, gstatic scoures и перенаправлений.
Давайте посмотрим, как просто настроить зеркало Google.
location / {
google on;
}
Что? Вы шутите? Да, это так просто!
Демонстрационный сайт https://g2.wen.lu

Зависимости
pcreподдержка регулярных выраженийngx_http_proxy_moduleподдержка обратного прокси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 \
<ваша конфигурация> \
--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: nginx/ <версия>
> собран с помощью gcc 4.x.x
> аргументы конфигурации: <конфигурация>
#
## загрузите ту же версию исходного кода nginx
## @see http://nginx.org/en/download.html
## замените <версия> на вашу версию nginx
#
wget http://nginx.org/download/nginx-<версия>.tar.gz
#
## настройте nginx
## замените <конфигурация> на вашу конфигурацию nginx
## замените </path/to/> на ваш реальный путь
#
./configure \
<конфигурация> \
--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 Scholar
google_scholar зависит от google, поэтому google_scholar не может использоваться независимо.
В настоящее время Google Scholar перешел с http на https, и поддерживается ncr, поэтому tld для Google Scholar больше не нужен.
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;
}
#...
Upstreaming
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 < ip of vps(us) >:80;
}
#
## конфигурация vps(us)
#
server {
listen 80;
server_name www.google.com;
# ...
location / {
proxy_pass https://www.google.com;
}
# ...
}
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-google.