介绍
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
5.完成如下
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;
}
}