前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx禁止访问该用401还是403

Nginx禁止访问该用401还是403

作者头像
李俊鹏
发布2020-06-15 16:03:38
3.3K0
发布2020-06-15 16:03:38
举报
文章被收录于专栏:运维研习社

之前在某些文章中看到建议在nginx配置中用return401而不用403,也没说具体原因,最近这不闲了,突然想起来,google了半天也没有任何相关的信息(可能不太会用google),没办法,只能自己实践看看了

401 Unauthorized:该HTTP状态码表示认证错误,它是为了认证设计的,而不是为了授权设计的。收到401响应,表示请求没有被认证—压根没有认证或者认证不正确—但是请重新认证和重试。(一般在响应头部包含一个WWW-Authenticate来描述如何认证)。通常由web服务器返回,而不是web应用。从性质上来说是临时的东西。(服务器要求客户端重试)

403 Forbidden:该HTTP状态码是关于授权方面的。从性质上来说是永久的东西,和应用的业务逻辑相关联。它比401更具体,更实际。收到403响应表示服务器完成认证过程,但是客户端请求没有权限去访问要求的资源

上面是两个状态码的解释,总的来说,401响应应该用来表示缺失或错误的认证;403响应应该用来表示当用户被认证后,但用户没有被授权对特定资源的访问或操作,这不是今天的重点

既然是nginx中配置的,那就配置nginx,访问下。这里用的nginx1.17.7版本测试,编译--with-debug,开启了debug,先查看return 401,为了方便,配置好之后,清空了日志,浏览器访问之后

查看日志大小

查看host.access.log,正常的401请求日志

查看host.error.log,详细记录了从请求进入的整个处理过程

查看error.log,只有epoll的定时器

接着改成return 403

查看日志,大小差不多

查看host.access.log

正常的403日志返回,查看host.error.log,403请求详细记录

查看error.log,同样只有epoll的定时器

从上面的测试结果来看,401和403对于nginx来说,好像没什么不同,该处理的,还是要处理,没有少任何步骤,所以401和403的选择,应该是根据你要返回给客户端什么样的信息来决定

另外附HTTP状态码决策图,建议收藏!

图片来源:https://www.loggly.com/blog/http-status-code-diagram/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档