Перейти к содержанию

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 года.


Gitter

Описание

ngx_http_google_filter_module — это фильтрующий модуль, который значительно упрощает развертывание зеркала Google. Регулярные выражения, uri-локации и другие сложные конфигурации уже встроены. Родной модуль nginx обеспечивает эффективность обработки cookies, gstatic scoures и перенаправлений. Давайте посмотрим, как просто настроить зеркало 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 \
  <ваша конфигурация> \
  --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.