最近要迁移云服务器,以前使用的云服务器有个防火墙。通过这个防火墙来限制每个IP跟我业务的最大连接数。这个防火墙目前每年的费用是2k+,但是新的云服务商提供的相同产品,每年费用要2w+。
这事我肯定不能忍,本来迁移云服务供应商就是为了能省点钱,不能收之桑榆失之东隅呀。
前几年有次出差,听合作伙伴的技术提起过,可以通过nginx实现四层通信的连接数限制。为了降低成本,我打算试试。经过一番周折,还真练成了。配置文件如下:
stream {
limit_conn_zone $binary_remote_addr zone=addr:10m;
upstream Port_7890 {
server 192.168.3.3:7890;
server 192.168.3.15:7890;
}
server {
listen 7890;
proxy_timeout 20s;
proxy_pass Port_7890;
limit_conn addr 20;
limit_conn_log_level error;
}
}
说明:
$binary_remote_addr 是限制同一客户端ip地址;
$server_name 是限制同一server最大并发数;
limit_conn 为限制并发连接数;
limit_rate 为限制下载速度;
limit_conn addr 20; 最大并发数;
limit_conn_log_level error; 错误日志;