Nginx,抑制/屏蔽默认错误

我编写了 Lua 代码并集成到 nginx 中,用于将文件上传到 S3 存储桶。如果上传失败或签名格式错误,则会收到 403 Forbidden 错误,同时客户端还会收到非常冗长的 Error XML。 我想拦截/返回默认错误消息,而不是来自 s3 的冗长错误消息,它会泄露 Access Key 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 命令的响应时,会有两个状态码,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 状态码响应的默认响应。

点赞