Nginx反向代理Google扩展ngx_http_google_filter_module

Nginx反向代理Google扩展ngx_http_google_filter_module
https://github.com/cuber/ngx_http_google_filter_module

ngx_http_google_filter_module是一个过滤器模块,能够让谷歌镜像更便捷的部署。内建了正则表达式、URI locations和其他复杂的配置。原生nginx模块确保了更加高效地处理cookies, gstatic scoures和重定向。

git clone https://github.com/cuber/ngx_http_google_filter_module
git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
wget https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz
wget wget https://ftp.openssl.org/source/openssl-1.1.1k.tar.gz
tar xzf pcre-8.44.tar.gz
tar xzf openssl-1.1.1k.tar.gz
tar xzf nginx-1.20.1.tar.gz
cd nginx-1.20.1
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module \
--with-http_v2_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module \
--with-http_realip_module --with-http_flv_module --with-openssl=../openssl-1.0.2j \
--with-pcre=../pcre-8.44 --with-pcre-jit --with-ld-opt='-ljemalloc' \
--add-module=../ngx_http_google_filter_module \
--add-module=../ngx_http_substitutions_filter_module
make
mv /usr/local/nginx/sbin/nginx{,_`date +%m%d`}  #备份现有nginx
cp objs/nginx /usr/local/nginx/sbin/  #更新nginx
nginx -t  #检查nginx语法
service nginx restart

要正确使用ngx_http_google_filter_module模块,需要依赖扩展:

  • pcre 正则
  • ngx_http_proxy_module 反向代理
  • ngx_http_substitutions_filter_module 多重替换
vi /usr/local/nginx/conf/vhost/demo.davidchau.cn.conf,保持内容如下:
server {
listen 443 ssl http2;
server_name demo.davidchau.cn;
ssl_certificate /usr/local/nginx/conf/ssl/demo.davidchau.cn.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/demo.davidchau.cn.key;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers CHACHA20:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-RC4-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS;
ssl_session_cache builtin:1000 shared:SSL:10m;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
location / {
google on;
google_scholar on;  #google_scholar 依赖于 google, 所以 google_scholar 无法独立使用。由于谷歌学术近日升级, 强制使用 https 协议, 并且 ncr 已经支持, 所以不再需要指定谷歌学术的 tld
google_language en;  #语言偏好,默认使用 zh-CN (中文)
}
}
server {
listen 80;
server_name demo.davidchau.cn;
rewrite ^(.*)$ https://$host$1 permanent; #访问http跳转至https
}

重启nginx:

service nginx restart