ngx_stream_core_module : http://nginx.org/en/docs/stream/ngx_stream_core_module.html

 nginx使用stream反向代理mysql : https://blog.csdn.net/jijiuqiu6646/article/details/78675891

 nginx stream模块初探 : https://blog.csdn.net/zhiyuan_2007/article/details/71238216

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
  
nginx协议转发stream模块 - ngx_stream_core_module
 
#用来实现四层协议的转发、代理或者负载均衡等.
#ngx_stream_core_module 模块自1.9.0版本开始提供,默认情况下不会构建.
#如果需要启用可使用 --with-stream 配置参数.
 
 
安装 ngx_stream_core_module 模块
 
1. 查看nginx当前编译信息
> nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
built with OpenSSL 1.0.2l  25 May 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-openssl=/root/lnmp1.4/src/openssl-1.0.2l
 
 
2. 进入之前安装 nginx 的源码目录,我们用的lnmp集成,所以进入 lnmp 当时的 nginx 目录
    1). > cd /root/lnmp1.4/src
 
    2). > ls
        autoconf-2.13.tar.gz  libiconv-1.14.tar.gz    mysql-5.7.18.tar.gz    patch                                  p.php
        boost_1_59_0.tar.bz2  libmcrypt-2.5.8.tar.gz  nginx-1.12.2.tar.gz    pcre-8.39.tar.bz2                      p.tar.gz
        curl-7.51.0.tar.bz2   mcrypt-2.6.8.tar.gz     openssl-1.0.2l         php-7.1.7.tar.bz2
        freetype-2.7.tar.bz2  mhash-0.9.9.9.tar.bz2   openssl-1.0.2l.tar.gz  phpMyAdmin-4.7.3-all-languages.tar.xz
 
    3). > tar -zxvf nginx-1.12.2.tar.gz
 
    4). > cd ./nginx-1.12.2
 
 
3. 在之前 编译安装的相关参数后追加需要动态编译新的模块 --with-stream
    1). > ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-openssl=/root/lnmp1.4/src/openssl-1.0.2l --with-stream
 
    2). > make
        # 注意!!! 执行完毕 make 命令后, 千万不要执行 make install 否则就真的把原先安装的 nginx 覆盖了!包括之前的配置信息等等,会全部覆盖!!!
        //------------------编译开始    begin
        ... 一大堆乱七八槽的
        sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
        -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
        -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
        -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
        < man/nginx.8 > objs/nginx.8
        make[1]: Leaving directory `/root/lnmp1.4/src/nginx-1.12.2'
        --到这里新的 nginx 二进制文件编译完毕
        //------------------编译开始    end
 
 
5. 进入 objs 目录,检查编译结果
 
    1). > cd ./objs/
 
    2). > ./nginx -V
         nginx version: nginx/1.12.2
         built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)
         built with OpenSSL 1.0.2l  25 May 2017
         TLS SNI support enabled
         configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-openssl=/root/lnmp1.4/src/openssl-1.0.2l --with-stream
        #可以看到, 要添加 --with-stream 模块,已经编译
 
 
6. 替换已存在的nginx二进制可执行文件
 
    1). > cd /usr/local/nginx/sbin/
 
    #保险起见我们不执行覆盖操作
    2). > mv nginx nginx.old
 
    3). > cp /root/lnmp1.4/src/nginx-1.12.2/objs/nginx /usr/local/nginx/sbin/
 
 
/****************************** 配置demo *****************************************/
 
#nginx.conf
stream {
 
    log_format proxy '$remote_addr [$time_local] '
                 '$protocol $status $bytes_sent $bytes_received '
                 '$session_time "$upstream_addr" '
                 '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
 
    access_log /var/log/nginx/tcp-access.log proxy;
     
    upstream https {
            server git.jsx6.com:443  max_fails=5 fail_timeout=50s;
        }
     
        upstream http {
            server git.jsx6.com:80  max_fails=5 fail_timeout=50s;
        }
     
       upstream ssh {
           server git.jsx6.com:22  max_fails=5 fail_timeout=50s;
       }
        server {
            listen 443;
            proxy_connect_timeout 1s;
            proxy_timeout 3s;
            proxy_pass https;
        }
     
        server {
            listen 80;
            proxy_connect_timeout 1s;
            proxy_timeout 3s;
            proxy_pass http;
        }
        server {
            listen 22;
            proxy_connect_timeout 1s;
            proxy_timeout 3s;
            proxy_pass ssh;
        }
 
    include vhost/stream/*.conf;
}
 
#vhost/stream/*.conf
server {
    listen 8308;
 
        #允许访问的ip
        allow 222.12.22.22/22;
        allow 1.203.111.111/28;
        allow 111.202.188.66/29;
        #拒绝访问的ip
        deny all;
 
    proxy_pass 10.9.111.110:3306;
}
 
  


---------------------------------------------------------------------------------------------
不忘初心 方得始终!

唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。