为什么要配这个正向代理
国内对stackoverflow等网站进行了速度限制,要查一些东西非常不方便。
以下记录如何配置正向代理的步骤:
买一台国外服务器
不念是在腾讯买的,新加坡,美国,香港的都行。我们在这个机器上配置nginx的正向代理,拿它当代理服务器访问stackoverflow这些被限速的网站。
下载第三方模块
如果是需要代理https的话(现在不配https几乎不能用了,毕竟现在主流的网站都是https),需要安装第三方的模块
ngx_http_proxy_connect_module,大家可以上github搜索这个项目。
这个模块最近还在维护,大家可以放心使用:
编译
以下是官方给出的编译方法:
$ wget http://nginx.org/download/nginx-1.9.2.tar.gz
$ tar -xzvf nginx-1.9.2.tar.gz
$ cd nginx-1.9.2/
$ patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
$ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
$ make && make install
补丁文件选这个:
兄弟们请注意,这里不可以直接运行,–add里的模块要写自己真实的路径,别搞错了。
修改配置
安装成功后,修改nginx.conf文件:
server {
resolver 114.114.114.114;
resolver_timeout 10s;
listen 82;
proxy_connect; #启用 CONNECT HTTP方法
proxy_connect_allow 443 80; #指定代理CONNECT方法可以连接的端口号或范围的列表
proxy_connect_connect_timeout 20s; #定义客户端与代理服务器建立连接的超时时间
proxy_connect_read_timeout 20s; #定义客户端从代理服务器读取响应的超时时间
proxy_connect_send_timeout 20s; #设置客户端将请求传输到代理服务器的超时时间
location / {
proxy_pass $scheme://$http_host$request_uri;
}
}
测试
启动nginx服务后就可以测试了:
curl -x 127.0.0.1:82 https://baidu.com
上面这个请求的过程可以用这个图来表示:
curl nginx (proxy_connect) github.com
| | |
(1) |-- CONNECT github.com:443 -->| |
| | |
| |----[ TCP connection ]--->|
| | |
(2) |<- HTTP/1.1 200 ---| |
| Connection Established | |
| | |
| |
========= CONNECT tunnel has been established. ===========
| |
| | |
| | |
| [ SSL stream ] | |
(3) |---[ GET / HTTP/1.1 ]----->| [ SSL stream ] |
| [ Host: github.com ] |---[ GET / HTTP/1.1 ]-->.
| | [ Host: github.com ] |
| | |
| | |
| | |
| | [ SSL stream ] |
| [ SSL stream ] |<--[ HTTP/1.1 200 OK ]---'
(4) |<--[ HTTP/1.1 200 OK ]------| [ < html page > ] |
| [ < html page > ] | |
| | |
配置代理
以mac笔记本为例的话,这样配置:
访问一下stackoverflow吧,看看是不是快多了:
不念在此提醒大家注意,学会了要好好的利用。
网络是双刃剑,我们要利用好它,不要用它伤害自己或者别人。
发表评论