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

google: Модуль NGINX для создания зеркала Google

Установка на Debian/Ubuntu

Эти документы применимы к пакету APT nginx-module-google, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT-репозиторий, как описано в настройке APT-репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-google
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия             | Компонент   | Архитектуры   |
|-------------|--------------------|-------------|---------------|
| debian      | bookworm           | main        | amd64, arm64  |
| debian      | bookworm-mainline  | main        | amd64, arm64  |
| debian      | trixie             | main        | amd64, arm64  |
| debian      | trixie-mainline    | main        | amd64, arm64  |
| ubuntu      | focal              | main        | amd64, arm64  |
| ubuntu      | focal-mainline     | main        | amd64, arm64  |
| ubuntu      | jammy              | main        | amd64, arm64  |
| ubuntu      | jammy-mainline     | main        | amd64, arm64  |
| ubuntu      | noble              | main        | amd64, arm64  |
| ubuntu      | noble-mainline     | main        | amd64, arm64  |

Gitter

Описание

ngx_http_google_filter_module — это фильтровый модуль, который значительно упрощает развертывание зеркала Google.
Регулярные выражения, URI-локации и другие сложные конфигурации уже встроены.
Нативный модуль nginx обеспечивает эффективность обработки куки, gstatic источников и перенаправлений.
Давайте посмотрим, насколько просто настроить зеркало Google.

location / {
  google on;
}

Что? Вы шутите?
Да, это так просто!

Демонстрационный сайт https://g2.wen.lu

Демонстрационный сайт

Зависимости

  1. pcre поддержка регулярных выражений
  2. ngx_http_proxy_module поддержка бэкенд-прокси
  3. ngx_http_substitutions_filter_module поддержка множества замен

загрузите последний исходный код

@см. http://nginx.org/en/download.html

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

клонируйте ngx_http_google_filter_module

@см. 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

@см. 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: nginx/ <version>
> собран с помощью gcc 4.x.x
> аргументы конфигурации: <configuration>

#
## загрузите ту же версию исходного кода nginx
## @см. 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 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;
  }
  #...

Прокси-сервер

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;
  }
  # ...
}