利用Nginx反向代理谷歌
自从谷歌被墙,虽然在家可以翻墙访问,但在公司翻墙不方便,只能在网上找谷歌镜像站(镜像站是通俗叫法,更准确的叫法是反向代理)。但这些找来的镜像站往往不太稳定,经常过一段时间就不能访问甚至也会被墙,所以想着要搭个个人自用的反向代理。
搭反向代理需要的条件
– 一个墙外的VPS 对VPS的要求不高,搬瓦工128m内存的小机,搭建及使用均毫无压力。
– 一个域名 网上有很多地方可以申请免费的域名,比如Freenom,可以免费申请.tk、.ml、.cf、.ga等后缀的顶级域名,最长一年免费,到期可以免费续期。
– 域名的SSL证书 其实反向代理本身是不需要SSL证书的,但如果没有证书只用http,仍然会被墙检测到搜索的内容,也就非常容易被拦截甚至被封IP,所以,反代谷歌最好有SSL证书,用https协议来访问。 网上能免费申请SSL证书的地方不多,推荐StartSSL,也是最长一年免费,到期再免费续期。申请SSL证书的步骤比较麻烦,可以看看这个教程:新StartSSL免费SSL证书申请使用。
安装并编译Nginx
Nginx自身就支持反向代理功能,但为了更好的反代谷歌,还需要至少一个第三方模块,Nginx加入第三方模块相对有点麻烦,需要下载源码重新编译。 这次折腾编译Nginx,参考了些网上的教程,但没有完全按照教程,步骤稍有点多,主要想尽量保留原有发行版的功能,以备以后用Nginx做其他用途。
以下命令全是在Ubuntu上执行,CentOs的命令不一样,用户默认为root,非root用户很多命令需要加sudo。
先安装需要用到的一些包
安装Nginx的发行版
查看发行版的版本号和编译参数
从上面的信息可以看到当前安装的是1.9.3版本,configure arguments后面跟的一长串是发行版的编译参数,很重要,后面需要用到。
找一个目录放源码,在这个目录里下载对应版本的Nginx源码并解压:
为了在反代时,更好的替换原网页中的信息,需要在编译时增加一个第三方模块:substitutions 扩展 下载 substitutions 的源码
下载后,会在当前目录下有个 ngx_http_substitutions_filter_module 目录
另一个用于便捷配置反代Google的第三方模块:ngx_http_google_filter_module 下载后,会在当前目录下有个 ngx_http_google_filter_module 目录,这个模块可选,增加后在Nginx配置文件中可以很简单的反代google
进入Nginx源码的目录,设置编译参数,其实就是在原发行版的编译参数后,增加两个–add-module=../xxx,把两个第三方模块包括进来。
设置后,会开始检查这些编译参数和环境,如果上面少安装了某些包,或更新的版本需要其他的包,就会报错,如少安装了libgeoip-dev,会报如下错误:
如果报了这类错误,可以Google一下错误信息,找到缺失的包并安装,然后再次执行 ./configure … 命令设置编译参数。
如果检查通过,最后会显示如下的信息:
然后编译Nginx
将编译后的文件替换到发行版的安装目录
可以用如下命令来关闭/启动 Nginx
用如下命令可以查看运行的状态
Nginx的设置
Nginx的配置文件是 /etc/nginx/nginx.conf,贴一下我反代Google的设置:
如果编译时没有加 ngx_http_google_filter_module 模块,location的设置可以参考如下:
修改完配置文件后,可以用 nginx -t 检查配置文件是否正确:
看到上面的显示就表明设置正确。
配置文件修改后需要重启Nginx: