使用nginx配置正向代理,解决stackoverflow等网站访问慢的问题

为什么要配这个正向代理

国内对stackoverflow等网站进行了速度限制,要查一些东西非常不方便。

以下记录如何配置正向代理的步骤:

买一台国外服务器

不念是在腾讯买的,新加坡,美国,香港的都行。我们在这个机器上配置nginx的正向代理,拿它当代理服务器访问stackoverflow这些被限速的网站。

下载第三方模块

如果是需要代理https的话(现在不配https几乎不能用了,毕竟现在主流的网站都是https),需要安装第三方的模块

ngx_http_proxy_connect_module,大家可以上github搜索这个项目。

这个模块最近还在维护,大家可以放心使用:

图片[1]-使用nginx配置正向代理,解决stackoverflow等网站访问慢的问题-不念博客
模块

编译

以下是官方给出的编译方法:

$ 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

补丁文件选这个:

图片[2]-使用nginx配置正向代理,解决stackoverflow等网站访问慢的问题-不念博客
补丁

兄弟们请注意,这里不可以直接运行,–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笔记本为例的话,这样配置:

图片[3]-使用nginx配置正向代理,解决stackoverflow等网站访问慢的问题-不念博客
配置

访问一下stackoverflow吧,看看是不是快多了:

图片[4]-使用nginx配置正向代理,解决stackoverflow等网站访问慢的问题-不念博客
访问

不念在此提醒大家注意,学会了要好好的利用。

网络是双刃剑,我们要利用好它,不要用它伤害自己或者别人。

© 版权声明
THE END