我已经编写了 lua 代码并集成在 nginx 中以将文件上传到 s3 存储桶中。如果上传失败或签名格式错误,我会收到一个 403 Forbidden,它与非常冗长的错误 XML 一起发送给客户端。我想拦截/返回默认错误消息,而不是来自 s3 的显示访问密钥 ID 的详细错误消息。
我尝试在下面添加代码段,但它没有任何效果:
error_page 403 /forbidden;
location = /forbidden {
internal;
content_by_lua_block {
local cjson = require "cjson"
ngx.header.content_type = "application/json; charset=utf-8"
ngx.status = 403
ngx.say(cjson.encode({ status = "Forbidden. Check the Request" }))
return ngx.exit(ngx.status)
}
}
当我看到 curl cmd 上传的响应时,有两个状态码,100 和 403。
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 403 Forbidden
< Date: Thu, 28 Sep 2017 04:26:31 GMT
< Content-Type: application/xml
< Transfer-Encoding: chunked
< Connection: keep-alive >
我如何处理这个以返回所有 403 状态代码响应的默认响应。