Pular para conteúdo

google: Módulo NGINX para criação de espelhos do Google

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e 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

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_google_filter_module.so;

Este documento descreve o nginx-module-google v0.2.4 lançado em 17 de junho de 2023.


Gitter

Descrição

ngx_http_google_filter_module é um módulo de filtro que torna a criação de espelhos do Google muito mais fácil.
Expressões regulares, locais de URI e outras configurações complexas já estão integradas.
O módulo nativo do nginx garante a eficiência no manuseio de cookies, pontuações gstatic e redirecionamentos.
Vamos ver como é fácil configurar um espelho do Google.

location / {
  google on;
}

O que? Você está brincando?
Sim, é tão simples assim!

Site de demonstração https://g2.wen.lu

Site de Demonstração

Dependências

  1. pcre suporte a expressões regulares
  2. ngx_http_proxy_module suporte a proxy de backend
  3. ngx_http_substitutions_filter_module suporte a múltiplas substituições

baixar a fonte mais recente

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

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

clonar ngx_http_google_filter_module

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

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

clonar ngx_http_substitutions_filter_module

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

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

##### Instalação nova #####
```bash
#
## configurar o nginx de forma personalizada
## substitua </path/to/> pelo seu caminho real
#
./configure \
  <sua configuração> \
  --add-module=</path/to/>ngx_http_google_filter_module \
  --add-module=</path/to/>ngx_http_substitutions_filter_module

Migrar de uma distribuição existente
#
## obter a configuração do nginx existente
## substitua </path/to/> pelo seu caminho real
#
</path/to/>nginx -V
> versão do nginx: nginx/ <versão>
> compilado por gcc 4.x.x
> argumentos de configuração: <configuração>

#
## baixar a mesma versão da fonte do nginx
## @veja http://nginx.org/en/download.html
## substitua <versão> pela sua versão do nginx
#
wget http://nginx.org/download/nginx-<versão>.tar.gz

#
## configurar o nginx
## substitua <configuração> pela sua configuração do nginx
## substitua </path/to/> pelo seu caminho real
#
./configure \
  <configuração> \
  --add-module=</path/to/>ngx_http_google_filter_module \
  --add-module=</path/to/>ngx_http_substitutions_filter_module
#
## se algumas bibliotecas estiverem faltando, você deve instalá-las com o gerenciador de pacotes
## ex. apt-get, pacman, yum ...
#

Uso

Configuração Básica

resolver é necessário para resolver domínios.

server {
  # ... parte da configuração do servidor
  resolver 8.8.8.8;
  location / {
    google on;
  }
  # ...
}

Google Scholar

google_scholar depende de google, portanto, google_scholar não pode ser usado de forma independente.
Atualmente, o Google Scholar migrou de http para https, e ncr é suportado, portanto, o tld do Google Scholar não é mais necessário.

location / {
  google on;
  google_scholar on;
}

Google Language

O idioma padrão pode ser configurado através de google_language, se não estiver configurado, zh-CN será o idioma padrão.

location / {
  google on;
  google_scholar on;
  # definir idioma para Alemão
  google_language de; 
}

Os idiomas suportados estão listados abaixo.

ar    -> Árabe
bg    -> Búlgaro
ca    -> Catalão
zh-CN -> Chinês (Simplificado)
zh-TW -> Chinês (Tradicional)
hr    -> Croata
cs    -> Tcheco
da    -> Dinamarquês
nl    -> Holandês
en    -> Inglês
tl    -> Filipino
fi    -> Finlandês
fr    -> Francês
de    -> Alemão
el    -> Grego
iw    -> Hebraico
hi    -> Hindi
hu    -> Húngaro
id    -> Indonésio
it    -> Italiano
ja    -> Japonês
ko    -> Coreano
lv    -> Letão
lt    -> Lituano
no    -> Norueguês
fa    -> Persa
pl    -> Polonês
pt-BR -> Português (Brasil)
pt-PT -> Português (Portugal)
ro    -> Romeno
ru    -> Russo
sr    -> Sérvio
sk    -> Eslovaco
sl    -> Esloveno
es    -> Espanhol
sv    -> Sueco
th    -> Tailandês
tr    -> Turco
uk    -> Ucraniano
vi    -> Vietnamita

Exclusão de Spider

Os spiders de qualquer motor de busca não são permitidos para rastrear o espelho do Google.
O robots.txt padrão listado abaixo já está integrado.

User-agent: *
Disallow: /
Se google_robots_allow estiver definido como on, o robots.txt será substituído pela versão do próprio Google.
  #...
  location / {
    google on;
    google_robots_allow on;
  }
  #...

Upstreaming

upstream pode ajudá-lo a evitar custos de resolução de nomes, diminuir a possibilidade de detecção por robôs do Google e fazer proxy através de alguns servidores específicos.

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

Protocolo de Proxy

Por padrão, o proxy usará https para se comunicar com servidores de backend.
Você pode usar google_ssl_off para forçar alguns domínios a reverter para o protocolo http.
Isso é útil se você quiser fazer proxy de alguns domínios através de outro gateway sem certificado SSL.

#
## ex. 
## eu quero fazer proxy do domínio 'www.google.com' assim
## vps(hk) -> vps(us) -> google
#

#
## configuração do vps(hk)
#
server {
  # ...
  location / {
    google on;
    google_ssl_off "www.google.com";
  }
  # ...
}

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

#
## configuração do vps(us)
#
server {
  listen 80;
  server_name www.google.com;
  # ...
  location / {
    proxy_pass https://www.google.com;
  }
  # ...
}

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-google.