Hello!
2013/9/12 raymond wang:
> 背景信息是这样的:
> 我想做一个访问防火墙,根据ip地址,每分钟内访问超过一定次数用ngx.exec("/captcha") 返回一个验证码页面。
>
> 但是如果刚好达到这个次数时是一个post请求的话,会提示405错误,经过验证,在post请求内之行ngx.exec就会返回405,求问怎么解决?
>
你确定 405 是由于 POST 请求 + ngx.exec 引起的吗?
我在本地尝试了下面这个最小化的例子,使用最新的 ngx_lua 0.8.8 结合 nginx 1.4.2 运行,并不能复现你说的问题:
location = /t {
content_by_lua '
ngx.req.read_body()
ngx.exit(403)
';
}
我们来用 curl 发送一个 POST 请求给这个 location /t:
$ curl -i -d 'hello world' localhost:8080/t
HTTP/1.1 403 Forbidden
Server: nginx/1.4.2
Date: Fri, 13 Sep 2013 18:47:49 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.4.2</center>
</body>
</html>
从输出可以看到,是期望的 403 响应。
如果你确实可以确认是这种组合造成的问题,请尝试提供一个最小化的完整示例,这样我可以在本地复现你看到的问题。谢谢合作!
Regards,
-agentzh