我使用 limit_conn_zone 和 limit_conn 指令,以将每个 IP 的连接数限制为 10。
http{
limit_conn_zone $binary_remote_addr zone=perip:10m;
include mime.types;
sendfile on;
server {
listen 80;
server_name wx110.cn;
root /data/www/wx120;
limit_conn perip 10;
location / {
index index.html ;
}
}
}
为了测试 nginx.conf 文件是否有效,我使用下面的 ab 测试建立 100 个连接。我希望其中 90 个会失败
ab-n 100-c 100http://wx110.cn/test.html
但结果是:
Server Software: nginx/1.16.1
Server Hostname:wx110.cn
Concurrency Level:100
Time taken for tests:0.150 seconds
Complete requests: 100
Failed requests: 0
答案1
根据您的配置,Nginx 每秒允许十个连接。如果您想限制从源 IP 到 Nginx 的总连接数,请执行以下操作:
单个 IP 仅允许 10 个连接
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT --reject-with tcp-reset