看起来是内容长度过大就会报这个Log,那么,这个content_length_n哪儿来的呢?
这儿的ngx_atoof的作用是把字符串转成数字,相似“123”变成123的作用。
发现了吗?实际上的意思便是HTTP头部中的Content-Length字段的值太大了。
Nginx很聪明,假如Content-Length过大,直接就断开了,底子不给你发4个G的时机。
URL在没约束长度的状况下可以终究靠添加长度的方法无限增大发送的恳求包巨细,但URL一般默许是有约束长度的,所以很少有人从这上面搞工作。
然后实际上GET恳求也能带body的,从你给出的日志内容来看,对方便是这么做的,在body里塞了4GB的数据然后发送给你,但被Nginx拦下来了。
标准仅仅主张“get恳求的恳求体无语义,server应该将其疏忽”,可是并没有说“get恳求不行能带恳求体”,就算是这么说了,再说标准也拦不住非标准完成对吧。
标准能说的仅仅“应该”,你“应该”做什么,“不应该”做什么,你假如真的做了/没做那谁都没办法的。
并且某一方的完成永久都不应该假定另一方会按套路出牌,尤其是关系到安全的状况。
谢邀,HTTP虽然是标准了点,但仍是有很多不标准的当地。假如是手动结构恳求,是可以到达这个意图的。因而,拿脚本来搞你站点也是能到达这个状况的。