Nginx Module for Google
Description
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.
location / {
google on;
}
What? Are you kidding me?
Yes, it's just that simple!
https://wen.lu
Demo siteDependency
pcre
regular expression supportngx_http_proxy_module
backend proxy supportngx_http_substitutions_filter_module
mutiple substitutions support
Installation
Download sources first
#
# download the newest source
# @see http://nginx.org/en/download.html
#
wget http://nginx.org/download/nginx-1.7.8.tar.gz
#
# clone 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
#
# clone 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
Brand new installation
#
# configure nginx customly
# replace </path/to/> to your real path
#
./configure \
<your configuration> \
--add-module=</path/to/>ngx_http_google_filter_module \
--add-module=</path/to/>ngx_http_substitutions_filter_module
Migrate from existed distribution
#
# get the configuration of existed nginx
# replace </path/to/> to your real path
#
</path/to/>nginx -V
> nginx version: nginx/ <version>
> built by gcc 4.x.x
> configure arguments: <configuration>
#
# download the same version of nginx source
# @see http://nginx.org/en/download.html
# replace <version> to your nginx version
#
wget http://nginx.org/download/nginx-<version>.tar.gz
#
# configure nginx
# replace <configuration> to your nginx configuration
# replace </path/to/> to your real path
#
./configure \
<configuration> \
--add-module=</path/to/>ngx_http_google_filter_module \
--add-module=</path/to/>ngx_http_substitutions_filter_module
#
# if some libraries were missing, you should install them with the package manager
# eg. apt-get, pacman, yum ...
#
Usage
Basic Configuration
resolver
is needed to resolve domains.
server {
# ... part of server configuration
resolver 8.8.8.8;
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.
Configuration nginx.
location / {
google on;
google_scholar on;
}
Google Language
The default language can be set throuth google_language
, if it is not setup, zh-CN
will be the default language.
location / {
google on;
google_scholar "scholar.google.co.jp";
# set language to German
google_language "de";
}
Supported languages are listed below.
de en es es-419 fr hr it nl pl pt-BR pt-PT
vi tr ru ar th ko zh-CN zh-TW ja
Spider Allowance
The spider of any search engines are now allowed to crawl google mirror.
Default robots.txt
listed below was build-in aleady.
User-agent: *
Disallow: /
If google_robots_allow
set to on
, the robots.txt
will be replaced with the version of google itself.
#...
location / {
google on;
google_robots_allow on;
}
#...
Upstreaming
upstream
can help you to avoid name resolving cost, decrease the possibility of google robot detection and proxy throuth some specific servers.
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;
}
Proxy Protocal
In default, the proxy will use https
to communicate with backend servers.
You can use google_ssl_off
to force some domains fall back to http
protocal.
It is useful, if you want to proxy some domains through another gateway without ssl certificate.
#
# eg.
# i want to proxy the domain 'www.google.com' like this
# vps(hk) -> vps(us) -> google
#
#
# configuration of vps(hk)
#
server {
# ...
location / {
google on;
google_ssl_off "www.google.com";
}
# ...
}
upstream www.google.com {
server < ip of vps(hk) >:80;
}
#
# configuration of vps(us)
#
server {
listen 80;
server_name www.google.com;
# ...
location / {
proxy_pass https://www.google.com;
}
# ...
}
Copyright & License
All codes are under GPLv2
Copyright (C) 2014 by Cube.