通过Nginx的端口转发提高加速器效率
首先澄清一个大部分人对端口转发影响加速器效率的误解,这部分朋友会认为增加了一个节点会降低速率,但事实却往往不是想象。 我们都知道数据包从A点到B点是要经过N层网关的,那么如果我们人为的选择一个适当的中转节点,就相当于走了更好的路由线路。
笔者近期遇到一个情况,本地直连香港再连国外,测速统计下行30K而上行却有20M带宽,其中缘由就当是运营商的国际线路拥挤吧。 所以考虑再三,只能在国内云上增加一个中转服务器了,毕竟阿里腾讯这样的大厂,国际线路都是优化过的,高质量的BGP和CN2哈。 附注:增加中转服务器啥都好,缺点就是费钱;另外CN2和BGP不是同类东西,有兴趣的朋友可以自查,香港机房有专线,速度飞快。
可以通过nginx、haproxy、iptables、firewalld、socat等方式进行端口转发,笔者最熟悉的就是Nginx了,而且负载均衡也简单。 至于其他几个,haproxy不支持UDP转发,iptables配置略为繁杂,firewalld比较少用到,至于socat的话笔者孤陋寡闻就不考虑了。
以下是Nginx的配置,需要放在http同层而不是内层,因为stream并非http协议(留意下文注释说明)
user nginx;
worker_processes auto;
#如果报错没有stream指令,开头加上这行
#load_module /usr/lib64/nginx/modules/ngx_stream_module.so;
events {
use epoll;
worker_connections 30000;
}
#【端口转发,开始配置】
stream {
upstream helloworld {
ip_hash;
server 1.3.5.7:2468;
server 2.4.6.8:1357;
}
server {
listen 8080;
listen 8080 udp;
proxy_pass helloworld;
}
#上方负载均衡,下方单个机器,二选其一即可
server {
listen 10443;
listen 10443 udp;
proxy_pass 123.45.67.89:49152;
}
}
#【端口转发,结束配置】
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
root /data/web/website;
}
}