Total Pageviews

Tuesday, 10 April 2012

用nginx做正向代理(其实就是http代理),搭配tor browser翻墙

修改Nginx的配置文件nginx.conf如下,添加如下内容:
server {
resolver 8.8.8.8;
listen 82;
proxy_cache mem_cache;
proxy_max_temp_file_size 4m;
location / {
proxy_pass http://$http_host$request_uri;
proxy_connect_timeout   60;
proxy_send_timeout     120;
proxy_read_timeout     120;
}
}

注意项:
(以上蓝色部分不是非加不可的。)
1. 不能有hostname
2. 必须有resolver, 即dns,即上面的x.x.x.x,换成你们的DNS服务器ip即可
3 . $http_host和$request_uri是nginx系统变量,不要想着替换他们,保持原样就OK。
4.上面配置中的82,可以根据自己的需要修改。
这样的 http代理建成后,即可搭配tor browser翻墙.注意:在vidalia的控制面板中,选择代理type时,要选择http,不要选择http/https.

参考:
http://wiki.nginx.org/HttpProxyModule
        如果要在网关上做代理,可以加iptables规则。
设置代理转发:
iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d ! 192.168.0.0/24 -p tcp --dport 80 -j DNAT --to 192.168.0.1:8081

防止外网连接:
iptables -A INPUT -i eth0 -p tcp --dport 8081 -j DROP   这样所有流量就被网关代理“劫持”并转发了。
        Nginx的wiki上还提到如果使用了服务端推送技术(long-polling),一定要关闭proxy_buffering,防止推送内容被缓存导致Comet applications失效。我这里更多考虑的是吞吐率,故仍然开启了proxy_buffering,实用时还是依据你具体需求而定。
        另外再提一下nginx代理的缺点:
    不支持CONNECT,无法正向代理HTTPS/NNTPS等。
    Nginx与被代理服务器通信只支持HTTP/1.0,而且不支持keep-alive。导致的结果是,由于tcp三次握手,通过代理服务器的每个后续HTTP请求都要比直连延时1个从被代理服务器到代理服务器的RTT。如果被代理服务器距离代理服务器较远,将显著减慢页面加载速度。所以做http代理还是Squid更好。

如果你的本地机器为windows,就不用看下面的内容了.

如果你的本地机器为linux系统,
查看dns方法
cat /etc/resolv.conf
代理的使用:
在需要访问外网的机器上执行以下操作之一即可:
1. export http_proxy=http://yourproxyaddress:proxyport
2. gedit ~/.bashrc
    export http_proxy=http://yourproxyaddress:proxyport
yourproxyaddress也就是你的Nginx服务器的ip了,proxyport就是上面配置中的82,可以根据自己的需要修改。