nginx之stream模块


介绍

1.nginx的stream模块一般用于TCP/UDP数据流的转发和负载均衡,此模块在nginx 1.9.0开始提供,下面我们举例如何使用nginx的stream模块进行加密转发代理挖矿流量以及一些其它用途(代理挖矿流量,中国大陆用户需要一台境外服务器)
(经过一段时间测试发现,中国大陆云服务器厂商海外节点搭建中转大概率会遭到GFW阻断,表现为端口不通,ssh阻断,但域名解析正常,梯子某些协议也会遭到阻断,基本是TCP阻断)
2.更新,调整至最新稳定版1.24.0,去除动态模块,完全编译安装,抛弃apt install,只安装一些必要模块

备份

1.备份永远都是重要的一步,防止后续操作有误能及时恢复
2.一般来说nginx的二进制文件在/usr/sbin/目录下,我们执行cp /usr/sbin/nginx /usr/sbin/nginx.bck
3.若你是使用/etc/nginx/nginx.conf/etc/nginx/conf.d/*.conf等原有配置文件,那么也要备份下

编译安装

1.下载nginx安装包,解压,官网地址

2.比如1.24.0稳定版安装包,我们使用wget下载,若没有自行安装wget一下,wget https://nginx.org/download/nginx-1.24.0.tar.gz
下载解压安装包

3.进入解压后目录,cd nginx-1.24.0/

4.安装依赖库,只例举了一些常见报错所需要的依赖库
apt install libpcre3-dev zlib1g-dev libxml2-dev libxslt1-dev libgd-dev libssl-dev libmaxminddb-dev libgeoip-dev -y

4.输入

./configure --prefix=/usr/share/nginx --sbin-path=/var/www/ --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --conf-path=/etc/nginx/nginx.conf --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --with-compat --with-debug --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_secure_link_module --with-http_sub_module --with-stream --with-stream_realip_module --with-mail_ssl_module --with-stream_ssl_module --with-stream_ssl_preread_module

添加stream模块

5.完成如下
configure完成

6.执行make & make install,等待一两分钟后无报错即可,如果报错nginx: [emerg] getpwnam("nginx") failed
解决useradd nginx -s /sbin/nologin -M

7.后续nginx可执行文件在/usr/sbin/nginx,我们接下来需要写个systemd来控制nginx,vim /etc/systemd/system/nginx.service

[Unit]
Description=Nginx HTTP Server 
[Service] 
Type=forking 
PIDFile=/var/run/nginx.pid 
ExecStart=/usr/sbin/nginx 
ExecReload=/usr/sbin/nginx -s reload 
ExecStop=/usr/sbin/nginx -s quit 
User=root 
Group=root 
KillMode=process 
Restart=on-failure 
[Install] 
WantedBy=multi-user.target

8.保存退出,重载systemctl:systemctl daemon-reload

配置nginx stream

1.stream模块是nginx的顶层模块,须在nginx.conf中定义
2.打开配置文件,vim /etc/nginx/nginx.conf,在event模块和http模块之间写入如下,保存退出

stream {
    upstream f2pool {
        server cfxssl.f2pool.com:6820;
    }
        server {
            listen  6820;
            proxy_pass  f2pool;
        }
}

2.重启nginx,systemctl restart nginx,不报错即可

3.这样你的挖矿代理就完成了,运行在你的服务器ip或域名的6820端口,比如用NBMiner挖CFX coin,具体替换成对应矿池的设置
./NBMiner_Linux/nbminer -a octopus -o stratum+ssl://你的ip或域名 -u penju

4.因为连接的矿池的ssl地址,所以这里的ssl加密就不必要了,倘若要使用矿池的TCP连接,这里就可以继续配置SSL加密,如

stream {
    upstream f2pool {
        server cfxssl.f2pool.com:6820;
    }
        server {
            listen  6820    ssl;
            proxy_pass  f2pool;
            ssl_certificate /var/www/ssl/yourcer.cer;
            ssl_certificate_key /var/www/ssl/yourkey.key;
        }
}

证书文件使用自签名的就完全OK了

5.这样一个无损代理挖矿流量的中转就完成了,让您无惧第三方黑心不良抽水!

6.负载均衡类似,添加多个后台server即可,如下

stream {
    upstream f2pool {
        server cfxssl.f2pool.com:6820;
        server cfxssl.f2pool.com:6821;
        server cfxssl.f2pool.com:6822;
    }
        server {
            listen  6820;
            proxy_pass  f2pool;
        }
}

文章作者: 牛牛🐮
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 牛牛🐮 !
  目录