我正在测试将使用Django REST框架实现的访问控制的Web服务移植到nginx / uwsgi。当我测试PUT请求(由于用户没有该端点的权限)而返回403错误时,有时会在日志中得到如下错误:
2016/02/09 06:42:05 [error] 574#0: *14978766 readv() failed (104: Connection reset by peer) while reading upstream, client: 10.10.10.10, server: test.whatever.com, request: "PUT /api/1.0/domains/name/Quest/page_content/name/Resit/ HTTP/1.1", upstream: "uwsgi://unix:///tmp/ipp_api_uwsgi.soc:", host: "test.whatever.com"
选项1似乎不是正确的方法-DRF的许可模块检查用户是否具有对端点的访问权限,如果没有,则拒绝PUT。帖子数据永远不会被访问,而应该被转储。选项2似乎可以解决问题,但我担心性能以及对其他成功的PUT请求的影响。
选项2是我应该遵循的方法吗?还有其他建议吗?
post-buffering
将会导致uWSGI消耗和缓冲主体请求,所以是的,它会影响性能,例如,如果有人未经许可而发出大量请求。uWSGI将缓冲所有缓冲区,而不仅仅是拒绝。
但是您可以使用适当的中间件在Django应用中处理该问题,该中间件将在/dev/null
没有权限执行任何操作的情况下将所有请求主体放入其中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句