Nginx限制访问代理TCP资源

本文介绍了使用Nginx进行流量控制的方法,包括基于IP地址的访问限制、限制TCP连接数以防拒绝服务攻击及限制带宽等。文章通过具体配置示例展示了如何实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1    通过IP地址限制访问

Nginx能允许或拒绝基于特定IP地址或客户端计算机IP地址范围。为了允许或定义访问,在stream上下文或server块中使用allow和deny指令:

stream {

    ...

    server {

        listen 12345;

        deny 192.168.1.2;

        allow 192.168.1.1/24;

        allow 2001:0db8::/32;

        deny all;

    }

}

 规则按顺序处理,从上到下:如果在序列中第一个指令deny all,那么后面所有allow指令都没有效果。在该例子中,子网络192.168.1.1/24允许访问,除了192.168.1.2。IPv6范围地址2001:0db8::/32也允许,其它任何IP地址被拒绝。

2    限制TCP连接数

你能限制来自一个IP地址同时的TCP连接。这能防止拒绝服务(Dos)攻击。

首先,让我们定义区域存储一台服务器最大TCP连接数,和标识连接的键。这可以在stream上下文中使用limit_conn_zone指令完成:

stream {

    ...

    limit_conn_zone $binary_remote_addr zone=ip_addr:10m;

    ...

}

标识连接的键定义为$binary_remote_addr,代表客户端IP地址的二进制格式。共享内存区域的名字是ip_addr,区域大小是10兆字节。

区域定义后,使用limit_conn指令限制连接。它的第一个参数指定共享内存区域的名字。第二个参数,指定每个IP地址允许连接的最大连接数:

stream {

    ...

    limit_conn_zone $binary_remote_addr zone=ip_addr:10m;

 

    server {

        ...

        limit_conn ip_addr 1;

    }

}

 当每个IP地址的连接数时,请注意,多个主机在一个广播地址(NAT)设备共享相同IP地址。

3    限制带宽

你能配置TCP连接的最大下载或上传速度。分别包括proxy_download_rate或proxy_upload_rate指令:

server {

    ...

    proxy_download_rate 100k;

    proxy_upload_rate   50k;

}

使用这些设置,客户端能通过单个连接最大每秒100千字节下载数据,通过单个连接最大每秒50千字节上传数据。然而,客户端能打开多个连接。如果我们的目标是为每个客户端限制整体加载的速度,连接数必须限制为1:

stream {

    ...

    limit_conn_zone $binary_remote_addr zone=ip_addr:10m;

 

    server {

        ...

        limit_conn ip_addr 1;

        proxy_download_rate 100k;

        proxy_upload_rate   50k;

    }

}

转载于:https://my.oschina.net/leeck/blog/729590

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值