我们编写了一些工具来自动化常见的开发任务。 一个工具,例如,确保我们所有的git仓库是最新的。 为了这个工作,我们的工具需要连接到我们的git服务器并获取每个存储库的最新版本。 我们有很多的git仓库,所以这个工具最终会在短时间内创build很多连接 – 抛出iptable的速率限制规则,并locking我们一段时间(不知道多久)。 如何禁用某些IP地址的速率限制(如我们的办公室)?
我有以下业务场景: Apache HTTP服务器通过ajp负载平衡客户端请求到应用程序服务器 所有的资源密集型工作都是在每个请求的应用服务器上完成的 请求是基于应用程序用户的,但是没有简单的方法来限制用户。 大多数用户将来自一个单一的IP,有几个可能来自几个ips。 因此,为了这个问题的意图,我假设每个用户将来自一个IP。 目标是防止任何单个用户用请求淹没服务器。 我目前使用iptables限速来限制每个ip的最大并发连接数。 有更好的方法吗?
我想创build一个简单的脚本,使我能够将接口的输出速度限制在56k(调制解调器速度)和1MBit / s之间。 我发现下面的这个工作是做的: tc qdisc add dev eth1 root tbf rate 220kbit latency 50ms burst 1540 但是现在我希望脚本的input只能是“速度”。 如果我只知道速率,那么计算好的延迟和突发值将会是一个好的方法吗? tbf手册页说最小突发应该是由我的内核HZ划分的速率。 这是有道理的,但它不能帮助我find一个公式,从速度计算明显的爆裂值。 可能我希望我的爆发值比最小值大一点? 而我将如何计算一个很好的延迟值? 延时是否应该随速度变化?
我想限制(但不阻止)各种爬虫。 根据类似问题的其他例子,我想出了这个: http { ## 10MB zone, 5 reqs per sec limit_req_zone $limit zone=zone_a:10m rate=5r/s; geo $limited { default 0; 157.55.39.31/32 1; 157.55.39.39/32 1; 157.55.39.40/32 1; 157.55.39.166/32 1; 157.55.39.167/32 1; 157.55.39.212/32 1; 157.55.39.213/32 1; 68.180.229.48/32 1; } map $limited $limit { 0 "false"; 1 "true"; } ## – do something – } 如果我理解正确,地理区块中匹配的IP会将$限制为1,然后地图块将把$ limit设置为true / […]
有时候,我会在几个小时内通过下载整个网站(〜2GB)的“leechers”来访问,而普通用户则远远低于50MB。 我想为每个访问者设置一个“字节限制”(例如,允许每天和访问者最多100 MB)。 我已经尝试了mod_cband ,它非常接近我的目标。 不幸的是,我只pipe理了每个VHost的报价,即如果配额被击中,整个VHost就会被封锁。 mod_cband也可以pipe理每个远程IP的配额 – 但为此,我需要事先知道这些IP,而我不知道。 我也看了一下mod_evasive ,我已经在稍微不同的上下文中使用了。 但是这只允许我限制请求的数量,并不考虑“卷”(字节传输)。 有没有“即用型”的解决scheme? 如果我错过了mod_cband的东西,也欢迎提示。 如果一个解决scheme不能绑定到VHost(但将服务器范围内),这也是可以接受的(尽pipe每个VHost是优选的)。 注意我不想限制带宽 (即速度),既不限制同时请求每个IP ; 这不是带宽,而是“抄袭猫”。 编辑:我刚刚发现了Apache ::配额 ,这似乎做了我想要的东西。 但它a)需要mod_perl运行(我不熟悉Perl编码),和b)似乎没有维护(最新版本是v0.04,可以追溯到2007年3月,如果我有那正确)。 Edit2:也欢迎基于mod_security或iptables的解决scheme。 到目前为止,我在这方面发现的只是速度问题,或者限制每个远程IP的连接数量,这不是我所追求的。 编辑3:虽然我已经find了解决scheme的潜在问题(请参阅下面的答案),但我仍然对build立“每个访问者和时间的转移限额”的解决scheme感兴趣,正如我的问题所述 – 因为我的解决scheme不能到处应用(请参阅上述“假设”)。
我使用mp4模块从源代码编译的nginx/1.11.11 ,我正在提供从300MB大小到8GB的video文件。 我正在考虑实施类似于谷歌驱动器的油门系统。 如果文件的大小设置的很大, limit_rate ,如果文件的大小很小,则设置一个较小的limit_rate 。 问题是我找不到获取服务文件大小的方法。 我的default.conf文件如下所示: server { listen 80; server_name _; # change this for your server root /var/www; index index.php; client_max_body_size 5G; proxy_read_timeout 60000000; # handle requests to the API location ~ /api/v2/(.+)$ { if (!-e $request_filename) { rewrite ^/api/v2/(.*) /api/v2/index.php?_page_url=$1 last; } fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param MOD_X_ACCEL_REDIRECT_ENABLED on; […]
我的configuration中的limit_req_zoneconfiguration如下: limit_req_zone $nginx_version zone=site1:10m rate=1000r/s; 我不希望从区域site1每秒钟超过1000个请求。 我在我的位置使用这个区域如下: location /exchange/site1/ { limit_req zone=site1 nodelay; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header Host $http_host; proxy_set_header Content-Type application/json; proxy_pass http://lb-server/site1/; proxy_redirect off; } 但是,当我实际使用ngxtop来查看有多less个请求正在传递时,我发现site1实际上每秒发送大约600个请求,但其中大约一半的请求在nginx中丢失。 我的configuration有问题吗? 我应该增加内存空间吗? 我尝试了100米,但仍然看到相同的行为。 还有什么我在这里失踪,可以帮助吗?
我想使用nginx作为https前端,我正在寻找一种方法来限制TCP连接。 这些限制应该基于远程IP地址,并且适用于HTTP / 1.1以及HTTP 2 。 对于HTTP / 1.1,我认为每个IP会有15个并发连接(因为大多数浏览器似乎最多使用6个),所以对于HTTP / 2应该足够了。 但是nginx文档指出: 在HTTP / 2和SPDY中,每个并发请求被认为是一个单独的连接。 HTTP / 2规范说明了SETTINGS_MAX_CONCURRENT_STREAMS参数: build议这个值不小于100,以免不必要地限制并行性。 这是否意味着我应该允许每个远程IP至less100个连接? 在我的testing中似乎是如此,但也许我错过了一些东西。 因为这个接缝本质上意味着我不能对并发TCP连接的数量设置任何有意义的限制,而不会严重限制HTTP / 2 。
我有许多不同的Web应用程序在IIS7下运行。 是否可以对一个应用程序进行限制 – 例如,限制连接数,带宽,内存使用和允许的CPU数量? 我需要这样做,而不是在盒子上安装任何额外的软件。
有没有办法将来自同一IP地址的传入数据包限制为每秒X? 我们在我们的机器上运行特定types的服务(游戏服务器),并且大量的漏洞利用依赖于将70-100个空包发送给它。