当前位置 博文首页 > u010786200的博客:nginx做正向代理(Centos7,支持http和https

    u010786200的博客:nginx做正向代理(Centos7,支持http和https

    作者:[db:作者] 时间:2021-06-18 18:42

    默认的情况下,使用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