nginx做正向代理(Centos7,支持http和https)

默认的情况下,使用nginx做正向代理可以解析http请求,

对于诸如baidu.com这样的https请求,nginx默认并不支持,不过我们可以借助第三方模块来实现。

 

1、先说默认情况下的代理配置

 

配置方法如下:

#user  nobody;
worker_processes  4;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    server {
        resolver 192.168.31.1;
        resolver_timeout 5s;
     
        listen 8888;
     
        access_log  /nginx-1.10.3/logs/proxy.access.log;
        error_log   /nginx-1.10.3/logs/proxy.error.log;
     
        location / {
            proxy_pass $scheme://$host$request_uri;
            proxy_set_header Host $http_host;
     
            proxy_buffers 256 4k;
            proxy_max_temp_file_size 0;
     
            proxy_connect_timeout 30;
     
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 301 1h;
            proxy_cache_valid any 1m;
        }
    }
}

listen的就是监听的端口。

resolver就是一个dns地址,如果在家里用路由器上网,一般也可以配成你的路由器地址。

其它配置不改也行,这样配置后,对非https的访问没什么问题,不过这显然不够用,我们接着讲一下如何实现https的代理。

 

2、再说用nginx同时代理https和http


这里我们需要借助大神开发的【ngx_http_proxy_connect_module

首先要确保你安装了patch,gcc、gcc++、pcre、zlib,这些都是我们用到的依赖软件或静态库

yum group install -y "Development Tools"
yum install -y patch pcre-devel pcre zlib-devel zlib

 

然后github下载下来这个模块,就是直接去官网把整个目录下下来,解压放到你centos的某个目录下。

我这里留了个百度网盘的备份: 链接:https://pan.baidu.com/s/1eqcFW8tEE6SEg3b9OHyThA 密码:c8e2

 

下载nginx、按照官网说明执行以下命令

$ 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/proxy_connect.patch
$ ./configure --add-module=/path/to/ngx_http_proxy_connect_module
$ make && make install

注意其中的【/path/to/ngx_http_proxy_connect_module】,指的就是你从github上,下载的这个模块的存放路径。

完成后,/usr/local/nginx就是编译后的nginx的路径。

 

然后编辑/usr/local/nginx/conf/nginx.conf(注意备份原文件),修改后内容如下:

worker_processes  1;


events {
    worker_connections  1024;
}


http {


    server {
        resolver 192.168.31.1;
        resolver_timeout 5s;
        listen       8889;
        proxy_connect;
        proxy_connect_allow            443 563;
        proxy_connect_connect_timeout  10s;
        proxy_connect_read_timeout     10s;
        proxy_connect_send_timeout     10s;

        location / {
          #proxy_pass $scheme://$host$request_uri;
          #proxy_set_header Host $http_host;

          proxy_pass http://$host;
          proxy_set_header Host $host;


          proxy_buffers 256 4k;
          proxy_max_temp_file_size 0;

          proxy_connect_timeout 30;

          proxy_cache_valid 200 302 10m;
          proxy_cache_valid 301 1h;
          proxy_cache_valid any 1m;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

然后保存。

listen的就是监听的端口。

resolver就是一个dns地址,如果在家里用路由器上网,一般也可以配成你的路由器地址。

 

最后执行:

/usr/bin/local/nginx/sbin/nginx

 

 

找一台外网的机器,配置一下代理,百度上查看一下本机ip,如果成功的话,显示的就是代理服务器的外网IP了。

 

再附一篇介绍--CentOS如何通过代理上网:

http://www.cnblogs.com/flying607/p/8709640.html

 

posted @ 2017-03-12 10:53  剑握在手  阅读(15168)  评论(5编辑  收藏  举报
返回顶部↑