乐趣区

关于nginx:Nginx实现正向代理

应用正向代理的场景, 以及正向代理和反向代理的区别:

了解:
客户端 代理 服务器
A B C
正向:* B C
反向:A B *

正向暗藏客户端
反向暗藏服务端

1 查看文档

 https://github.com/chobits/ngx_http_proxy_connect_module/blob/master/README.md

2 其中: 构建为动静模块

装置 nginx 和 nginx_proxy_connect module

从 nginx 的 1.9.11 开始,你也能够作为一个动静模块,通过应用编译该模块 –add-dynamic-module=PATH 选项,而不是 –add-module=PATH 在对./configure 命令行。
$ $ wget http://nginx.org/download/ngi…
$ tar -xzvf nginx-1.9.12.tar.gz
$ cd nginx-1.9.12/
$ patch -p1 < /path/to/ngx_http_proxy_connect_module/patch/proxy_connect.patch
$ ./configure –add-dynamic-module=/path/to/ngx_http_proxy_connect_module
$ make && make install

3 make 可能遇到的问题

1 error: this statement may fall through [-Werror=implicit-fallthrough=]
2“src/os/unix/ngx_user.c:26:7: error:‘struct crypt_data’has no member named‘current_salt’”

问题 1 解决, 正文掉这一行

vim /opt/nginx/nginx-1.9.2/src/os/unix/ngx_user.c
36 : / cd.current_salt[0] = ~salt[0];/

问题 2 解决, 编译加上参数 :
make CFLAGS=’-Wno-implicit-fallthrough’;
make install;

4 实现后 配置 conf :

vim /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;
#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 {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
 
server {
        listen 88;                #监听端口
        resolver 183.60.82.98;   #dns 解析地址
        server_name  _;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
             proxy_pass https://$host$request_uri;     #设定 http 代理服务器的协定和地址
             proxy_set_header HOST $host;
             proxy_buffers 256 4k;
             proxy_max_temp_file_size 0k;
             proxy_connect_timeout 30;
             proxy_send_timeout 60;
             proxy_read_timeout 60;
             proxy_next_upstream error timeout invalid_header http_502;
            #root   html;
            #index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {root   html;}
 
    }
 
 
 
server {
       resolver 8.8.8.8;   #dns 解析地址
       listen 89;          #代理监听端口
       proxy_connect;
       proxy_connect_allow            443 563;
       location / {
             proxy_pass $scheme://$host$request_uri;     #设定 https 代理服务器的协定和地址
             proxy_set_header HOST $host;
             proxy_buffers 256 4k;
             proxy_max_temp_file_size 0k;
             proxy_connect_timeout 30;
             proxy_send_timeout 60;
             proxy_read_timeout 60;
             proxy_next_upstream error timeout invalid_header http_502;
 
       }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {root   html;}
 
    }  
 
} 

启动 nginx

curl -i –proxy 192.168.3.17:89 www.baidu.com

后果 :

退出移动版