做conn_zone 的时候,没有限制链接,正常返回200
来源:2-26 Nginx的请求限制_请求限制配置语法
极客不忙
2017-07-26
配置一样,
3回答
-
Jeson
2017-08-22
既然,有几个同学都遇到这个问题了,我刚把课程中的场景配置,自己再尝试了一遍:
除开配置、或者其他不细心的原因,我觉得大家出现这样的问题,和nginx处理静态元素效率有关系:
1、当我同样用课程中的配置
ab -n 200 -c 20 http://jeson.t.imooc.io/test_mysite.html
返回的结果是:
Time taken for tests: 0.411 seconds
nginx 很快就处理了,而且确实没有出现限制。
2、我把配置作了一些修改,加入了一行如下配置:
proxy_pass http://www.youku.com;
如果学习了代理的同学,可能会清楚这个配置,这里我得目的,就是让nginx处理效率变慢,这样nginx处理请求连接起来就变慢了。
再次压测,如下:
ab -n 200 -c 20 http://jeson.t.imooc.io/test_mysite.html
Non-2xx responses: 199
这个时候,就会出现很多非200的请求了。而且个数是:199个被限制住。
服务端error.log出现,如下错误日志:
2017/08/22 20:58:17 [error] 4920#4920: *143405 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"
2017/08/22 20:58:17 [error] 4920#4920: *143407 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"
2017/08/22 20:58:17 [error] 4920#4920: *143406 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"
2017/08/22 20:58:17 [error] 4920#4920: *143408 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"
2017/08/22 20:58:17 [error] 4920#4920: *143409 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"
2017/08/22 20:58:17 [error] 4920#4920: *143410 limiting connections by zone "conn_zone", client: 172.16.67.0, server: localhost, request: "GET /test_mysite.html HTTP/1.0", host: "jeson.t.imooc.io"
那么,总结为什么?
我们限制的虽然是一个,但是由于我们的并发量不足以使得nginx端并发使用到多个连接,尤其是对于nginx处理静态元素时,效率是比较高的。因此,给你的感觉是会限制不住。
00 -
LetsShare
2017-08-22
我一开始在conf.d/default.conf中的头部,定义的limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 也是无法控制请求数。
然后我把这句放到nginx.conf中http{...}中,就可以控制了。limit_req zone=one;仍让放在default.conf的server{...}中。
012017-08-22 -
Jeson
2017-07-26
学习的环境是否用的慕课网提供的docker容器环境来配置的?
012017-07-26
相似问题