您的位置:首页 > 理论基础 > 计算机网络

Nginx限制访问代理TCP资源

2016-08-08 00:00 281 查看
摘要: Nginx 限制访问 代理TCP资源

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息