Skip to content

google: NGINX Module for Google Mirror creation


CentOS/RHEL 6, 7, 8 or Amazon Linux 2

bash yum -y install yum -y install nginx-module-google

Enable the module by adding the following at the top of /etc/nginx/nginx.conf:

nginx load_module modules/;

This document describes nginx-module-google v0.2.1 released on Apr 27 2019.



ngx_http_google_filter_module is a filter module which makes google mirror much easier to deploy.
Regular expressions, uri locations and other complex configurations have been built-in already.
The native nginx module ensure the efficiency of handling cookies, gstatic scoures and redirections.
Let's see how easy it is to setup a google mirror. nginx location / { google on; }

What? Are you kidding me?
Yes, it's just that simple!

Demo site

Demo Site


  1. pcre regular expression support
  2. ngx_http_proxy_module backend proxy support
  3. ngx_http_substitutions_filter_module mutiple substitutions support

download the newest source



clone ngx_http_google_filter_module


git clone

clone ngx_http_substitutions_filter_module


git clone ```

Brand new installation

``` bash

configure nginx customly

replace with your real path

./configure \ \ --add-module=ngx_http_google_filter_module \ --add-module=ngx_http_substitutions_filter_module ```

Migrate from existed distribution


get the configuration of existed nginx

replace with your real path

nginx -V

nginx version: nginx/ built by gcc 4.x.x configure arguments:

download the same version of nginx source


replace with your nginx version


configure nginx

replace with your nginx configuration

replace with your real path

./configure \ \ --add-module=ngx_http_google_filter_module \ --add-module=ngx_http_substitutions_filter_module

if some libraries were missing, you should install them with the package manager

eg. apt-get, pacman, yum ...



Basic Configuration

resolver is needed to resolve domains. nginx server { # ... part of server configuration resolver; location / { google on; } # ... }

Google Scholar

google_scholar depends on google, so google_scholar cannot be used independently.
Nowadays google scholar has migrate from http to https, and ncr is supported, so the tld of google scholar is no more needed.
nginx location / { google on; google_scholar on; }

Google Language

The default language can be set through google_language, if it is not setup, zh-CN will be the default language. nginx location / { google on; google_scholar on; # set language to German google_language de; }

Supported languages are listed below. txt ar -> Arabic bg -> Bulgarian ca -> Catalan zh-CN -> Chinese (Simplified) zh-TW -> Chinese (Traditional) hr -> Croatian cs -> Czech da -> Danish nl -> Dutch en -> English tl -> Filipino fi -> Finnish fr -> French de -> German el -> Greek iw -> Hebrew hi -> Hindi hu -> Hungarian id -> Indonesian it -> Italian ja -> Japanese ko -> Korean lv -> Latvian lt -> Lithuanian no -> Norwegian fa -> Persian pl -> Polish pt-BR -> Portuguese (Brazil) pt-PT -> Portuguese (Portugal) ro -> Romanian ru -> Russian sr -> Serbian sk -> Slovak sl -> Slovenian es -> Spanish sv -> Swedish th -> Thai tr -> Turkish uk -> Ukrainian vi -> Vietnamese

Spider Exclusion

The spiders of any search engines are not allowed to crawl google mirror.
Default robots.txt listed below was build-in aleady. txt User-agent: * Disallow: /
If google_robots_allow set to on, the robots.txt will be replaced with the version of google itself.
nginx #... location / { google on; google_robots_allow on; } #...


upstream can help you to avoid name resolving cost, decrease the possibility of google robot detection and proxy through some specific servers.
nginx upstream { server; server; server; server; }

Proxy Protocol

By default, the proxy will use https to communicate with backend servers.
You can use google_ssl_off to force some domains to fall back to http protocol.
It is useful, if you want to proxy some domains through another gateway without ssl certificate. ```nginx


i want to proxy the domain '' like this

vps(hk) -> vps(us) -> google

configuration of vps(hk)

server { # ... location / { google on; google_ssl_off ""; } # ... }

upstream { server < ip of vps(us) >:80; }

configuration of vps(us)

server { listen 80; server_name; # ... location / { proxy_pass; } # ... } ```

All codes are under the same LICENCE with Nginx
Copyright (C) 2014 by Cube.


You may find additional configuration tips and documentation for this module in the GitHub repository for nginx-module-google.

Back to top