http状态码(三)401、403、404报错

一  401、403、404报错

①  401和403

说明: 由于 nginx 导致的'401、403'很不常见,这里不再细讲,后续会讲解两个'独特'的案例

  1) 401  Unauthorized  -->  权限认证机制、Cookie、Token  --> 请求没有经过'授权'

  2) 403  Forbidden     --> '请求被拒绝访问' <-- '有认证,认证不对或者权限不足'

备注1: 关注'$upstream_addr'字段,该字段'决定'是谁返回的这些'报错码',要了解'事故源'

备注2: nginx 启动'用户'对静态资源的权限、nginx自身的权限管控是否'配置错误'

文件权限:root 切换到 'su - nginx启动用户 -s /bin/bash',然后看能不能'cd'到资源目录

相关指令: allow 、deny ['ip黑白名单']、auth_basic、auth_basic_user_file

补充: 'SELinux'暂时不考虑

autoindex on; 少了这条参数,所以一直报 " directory index of "/data/soft/" is forbidden"

nginx 403 报错原因     nginx index 缺少/ 导致403

②   404

error.log: 'No such file or directory'

强调: 404 '报错'的本质'语义'就是请求的'服务端资源'找不到导致,至少'服务端'是这样'理性'认为

备注: 找不到的'原因'很多,可能是'资源确实不存在'或者'配置参数不合理'导致

internal: 指定给定location只能用于'内部'请求、对于'外部'请求,返回 '404' 报错

区分:请求'有没有'发送到'上游服务器',通过'$upstream_addr'判断,是否'有值'

1)请求'发送到上游',后端业务的问题

  场景1:可能经过nginx的'内部重定向'等,发送到'不符合预期'的proxy_pass

  场景2:上游'缺失'对应的资源目录或者资源目录'被其它程序覆盖',拉通'上游服务'人员来定位

2)请求'没有'发送到上游

  场景1:由于host跟server_name不匹配,导致匹配到'默认'的server_name上

  说明:

      1、该server块'没有'匹配的location

      2、会把url作为root指令的'静态资源目录下的资源'进行查找,找不到则'报错'

  场景2:server_name跟host匹配,但是实际'没有location'与'url'匹配

  场景3:由于rewrite '错误配置'重定向导致'路由不匹配',也即nginx'没有'对应location能匹配

  场景4:kong的route'路由规则和请求不匹配',导致404

  场景5:location也匹配了,但是服务器上实际'没有'对应的资源

明确:实际查找的'静态资源路径'是什么?  --> root、alias、try_files等'综合'作用

 [1]、请求行中的 '域名和ip' 负责定位服务所在的主机,确保请求是'发送到这个节点'上

 [2]、listen先筛选可以'选择的server_name',然后'host请求头'进行server_name匹配

 [3]、但是server_name'不匹配',就会查找默认的server_name

重点:

 [1]、nginx debug可以看到最终匹配的路由(using configuration)

 [2]、$server_name可以看到'最终匹配'的server块

 [3]、影响路由匹配的因素:静态资源是root和alias、动态资源是proxy_pass、重定向

++++++++++++++++  "一个案例"  ++++++++++++++++ 

条件: 

  多个server块'不同conf文件中'配置'同一个域名'

  但是location不同,reload|restart '不报错'

  请求的时候404,应该是'某个server被覆盖',所以'查找' serevr_name 是否'冲突'

报错: 'No such file or directory'

客户端: '404 Not Found'

补充: 定义'某种行为'出现的时候,主动展示'404'的报错

error_page    404  /404.html;

try_files $uri $uri/ /index.html =404;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值