基于Nginx实现谷歌反向代理

  • 内容
  • 评论
  • 相关

这两天舅舅闲的无聊开虚拟信用卡开了个AWS,其实也是因为最近(应该说很久以来)广大人民功夫网成功升级以后GAE作死门PPTP什么的全线OVER。在帮他配完AWS的Shadowsock以后我寻思着毕竟之前拿搬瓦工最低配开的美国Shadowsock代理实在慢的离谱,为了避免用谷歌还要忍受坑爹的网(tian)络(chao),刚好我这边因为开博客多了一台AWS的服务器,就想着用Nginx的反向代理实现下试试。

然而度娘却十分的不给力,整个搜索结果全部TMD是一个模式,完全没有P用,甚至有些配置文件给出的方式使用HTTP 1.0 (然而2.0都快出来了你特么在逗我)。在苦心翻了大半天以后,总算找到了个好用的。

原文地址在此。当然,我个人操作上有了一些不同。

由于之前服务器用的是Apache2,所以在此之前先卸载Apache2

sudo apt-get remove apache2

然后全新安装Nginx

sudo apt-get install nginx

反正Ubuntu的那啥蛮快的,过会儿就好系列。

然后编辑Nginx配置文件


cd /etc/nginx/sites-available
sudo nano default

按照我的想法,由于国内屏蔽谷歌,因此直接明文(80端口)搜索可能会被打断,进而考虑使用HTTPS加密。因此在80端口监听请求,然后强制跳转https。

 

然后。。。。。。。坑爹时刻来了。我之所以说度娘坑爹,因为我搜出来这里各种千奇百怪的配法,最坑爹的情况是我反向代理配置完了TMD居然跳转谷歌自己的域名了(然而,国内是屏蔽滴)。。。。。。

想想也是蛋疼。为了配个反代,光是重启Nginx失败都多少次了,差点让我疯狂到砸电脑。

好吧,不废话。直接上配置文件。

解释说明:第一行指定缓存请求的位置,以及最大缓存文件大小。第二行指定缓存保存关键字。

upstream里面是谷歌的服务器地址。nslookup www.google.com.hk就可以看到。

然后就是常规的server段,不过这部分中包括了SSL的配置。其中:

  • server_tokens off避免将服务器处理程序版本暴露,以免针对攻击。
  • ssl_certificate为证书文件地址,key为私钥文件。
  • ssl_protocols为允许的SSL协议。由于心血漏洞和POODLE漏洞,一般情况只开TLS。SSLv3及以下都不被推荐甚至是强烈反对的。
  • ssl_prefer_server_ciphers 表示服务器选择加密方式对(这玩意儿好像意思是由服务器决定加密传输的方式和算法)
    • ssl_ciphers 传输加密算法。在这里我禁用了任何RC4,DES,MD5这类弱算法,因为破解难度并不高了。
    • add_header Strict-Transport-Security "max-age=7200"; 参见WIKI对“HSTS”技术的解释。

Location段意思则是很明显的,除了Cookie部分。原作者的解释是:

传固定的cookie给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容。还有设置为新窗口打开网站,这个符合我们打开链接的习惯。

嗯,好吧,按照说得来,配置,重启,搜索,OK了。
然而为了搜索资料上谷歌(度娘坑B不解释系列),这B装的也真是特么不容易:)

p.s. 服务器的SSL证书可以免费申请。一个是StartSSL,一个是沃通的免费SSL。搜索下就有~