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.
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

Dependencias
pcresoporte para expresiones regularesngx_http_proxy_modulesoporte para proxy de backendngx_http_substitutions_filter_modulesoporte 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: /
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.