Saltar a contenido

google: Módulo NGINX para la creación de espejos de Google

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

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

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_google_filter_module.so;

Este documento describe nginx-module-google v0.2.4 lanzado el 17 de junio de 2023.


Gitter

Descripción

ngx_http_google_filter_module es un módulo de filtro que facilita mucho la implementación de espejos de Google.
Las expresiones regulares, ubicaciones de URI y otras configuraciones complejas ya están integradas.
El módulo nativo de nginx asegura la eficiencia en el manejo de cookies, fuentes gstatic y redirecciones.
Veamos lo fácil que es configurar un espejo de Google.

location / {
  google on;
}

¿Qué? ¿Estás bromeando?
¡Sí, es así de simple!

Sitio de demostración https://g2.wen.lu

Sitio de Demostración

Dependencias

  1. pcre soporte para expresiones regulares
  2. ngx_http_proxy_module soporte para proxy de backend
  3. ngx_http_substitutions_filter_module soporte para múltiples sustituciones

descargar la fuente más reciente

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

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

clonar 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

clonar 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

##### Instalación nueva #####
``` bash
#
## configurar nginx de forma personalizada
## reemplaza </path/to/> con tu ruta real
#
./configure \
  <tu configuración> \
  --add-module=</path/to/>ngx_http_google_filter_module \
  --add-module=</path/to/>ngx_http_substitutions_filter_module

Migrar desde una distribución existente
#
## obtener la configuración del nginx existente
## reemplaza </path/to/> con tu ruta real
#
</path/to/>nginx -V
> versión de nginx: nginx/ <versión>
> construido por gcc 4.x.x
> argumentos de configuración: <configuración>

#
## descargar la misma versión de la fuente de nginx
## @see http://nginx.org/en/download.html
## reemplaza <versión> con tu versión de nginx
#
wget http://nginx.org/download/nginx-<versión>.tar.gz

#
## configurar nginx
## reemplaza <configuración> con tu configuración de nginx
## reemplaza </path/to/> con tu ruta real
#
./configure \
  <configuración> \
  --add-module=</path/to/>ngx_http_google_filter_module \
  --add-module=</path/to/>ngx_http_substitutions_filter_module
#
## si faltan algunas bibliotecas, debes instalarlas con el gestor de paquetes
## ej. apt-get, pacman, yum ...
#

Uso

Configuración Básica

resolver es necesario para resolver dominios.

server {
  # ... parte de la configuración del servidor
  resolver 8.8.8.8;
  location / {
    google on;
  }
  # ...
}

Google Scholar

google_scholar depende de google, por lo que google_scholar no se puede usar de forma independiente.
Hoy en día, Google Scholar ha migrado de http a https, y se admite ncr, por lo que el tld de Google Scholar ya no es necesario.

location / {
  google on;
  google_scholar on;
}

Idioma de Google

El idioma predeterminado se puede establecer a través de google_language, si no se configura, zh-CN será el idioma predeterminado.

location / {
  google on;
  google_scholar on;
  # establecer idioma en alemán
  google_language de; 
}

Los idiomas admitidos se enumeran a continuación.

ar    -> Árabe
bg    -> Búlgaro
ca    -> Catalán
zh-CN -> Chino (Simplificado)
zh-TW -> Chino (Tradicional)
hr    -> Croata
cs    -> Checo
da    -> Danés
nl    -> Neerlandés
en    -> Inglés
tl    -> Filipino
fi    -> Finés
fr    -> Francés
de    -> Alemán
el    -> Griego
iw    -> Hebreo
hi    -> Hindi
hu    -> Húngaro
id    -> Indonesio
it    -> Italiano
ja    -> Japonés
ko    -> Coreano
lv    -> Letón
lt    -> Lituano
no    -> Noruego
fa    -> Persa
pl    -> Polaco
pt-BR -> Portugués (Brasil)
pt-PT -> Portugués (Portugal)
ro    -> Rumano
ru    -> Ruso
sr    -> Serbio
sk    -> Eslovaco
sl    -> Esloveno
es    -> Español
sv    -> Sueco
th    -> Tailandés
tr    -> Turco
uk    -> Ucraniano
vi    -> Vietnamita

Exclusión de Arañas

Las arañas de cualquier motor de búsqueda no están permitidas para rastrear el espejo de Google.
El robots.txt predeterminado que se muestra a continuación ya está integrado.

User-agent: *
Disallow: /
Si google_robots_allow se establece en on, el robots.txt será reemplazado por la versión de Google.
  #...
  location / {
    google on;
    google_robots_allow on;
  }
  #...

Enrutamiento

upstream puede ayudarte a evitar el costo de resolución de nombres, disminuir la posibilidad de detección por parte de robots de Google y hacer proxy a través de algunos 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 defecto, el proxy usará https para comunicarse con los servidores de backend.
Puedes usar google_ssl_off para forzar a algunos dominios a retroceder al protocolo http.
Es útil si deseas hacer proxy a algunos dominios a través de otra puerta de enlace sin certificado SSL.

#
## ej. 
## quiero hacer proxy del dominio 'www.google.com' así
## vps(hk) -> vps(us) -> google
#

#
## configuración de vps(hk)
#
server {
  # ...
  location / {
    google on;
    google_ssl_off "www.google.com";
  }
  # ...
}

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

#
## configuración de vps(us)
#
server {
  listen 80;
  server_name www.google.com;
  # ...
  location / {
    proxy_pass https://www.google.com;
  }
  # ...
}

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-google.