肥东建设局网站,网站开发前景与趋势如何,如何提高网站首页权重,开发区招聘信息最新招聘一 400报错汇总
① 综述
一、4xx状态码报错说明#xff1a; 客户端行为导致的报错二、通用的4xxHTTP报错1) 4002) 4013) 4034) 4045) 405 -- 不允许方法#xff0c;可能跨域或者nginx限制请求方法6) 4087) 4138) 419三、ngin自身定义的4xx报错495、496、497、498、4…一 400报错汇总
① 综述
一、4xx状态码报错说明 客户端行为导致的报错二、通用的4xxHTTP报错1) 4002) 4013) 4034) 4045) 405 -- 不允许方法可能跨域或者nginx限制请求方法6) 4087) 4138) 419三、ngin自身定义的4xx报错495、496、497、498、499在src/http/ngx_http_special_response.c文件中有状态码的解释
② HTTP 400的语义
关注 http的语义,以及 ninx 对 http的实现 的实践程度 说明 虽然我们无法去穷举所有可能出现的不合规类型,但是一些常见的类型必须熟知
③ 思考
思考1 debug 能观察 http 400 报错的原因吗?思考2 HTTP 400 报错,是nginx代理返回的? 还是后端服务器返回的?备注 通过$upstream_status和$upstream_addr综合判断说明 如果nginx 直接返回400报错,就不会转发到上游服务器原因 nginx认为客户端请求语法错误,导致无法理解请求信息,进而服务器无法处理请求④ nginx常见400报错
明确: 400 究竟是谁返回的? nginx代理还是后端 -- 看$upstream_status是否有值 1、Request Heder 请求头 过大场景1 某个域名下可能积累大量的cookie,导致Cookie请求头过大场景2 请求头携带特殊字符导致报错场景3 后端响应头返回异常信息阶段解析请求头的时候--两个反向(client-nginx;upstream--nginx) Cookie过大导致request 400
2、证书校验失败场景一般是nginx配置双向认证,nginx校验客户端证书,客户端没提供证书或者客户端证书过期细节点error.log debug 中报了SSL握手失败报错1 No required SSL certificate was sent报错2 client SSL certificate verify error: \(21:unable to verify the first certificate) \while reading client request header upstream 模块细节 nginx upstream 中带下划线bug 前端会报400错误 sping导致400
3、Invalid hostname 无效的主机头场景11) 由于nginx在转发的时候使用了默认的 proxy_set Host $proxy_host2) 传递过去的是upstream_id,导致tomcat无法解析主机头 场景2HTTP1.1,但是Host头为空模拟 curl -I -H Host: nginx.wzj.com 4、HTTP协议客户端报错: 400 Bad Request: The plain HTTP request was sent to HTTPS porterror.log报错 client sent plain HTTP request to HTTPS port \while reading client request header需求 配置文件将让Nginx侦听80和443端口,并将所有的HTTP请求重定向到HTTPS尝试 http://www.wzj.com -- 报错listen 80;
listen 443;
ssl on; 分割线 listen 80;
listen 443 ssl;原因分析1因为HTTP请求被发送到HTTPS端口2) 这种报错多出现在Nginx既处理HTTP请求又处理HTTPS请求的是多次重定向导致的情况遗留 proxy_set_header X-Forwarded-Proto https;
协议问题 Nginx The plain HTTP request was sent to HTTPS port 案例分析
URI过长或request header过大导致400或414报错
5、 其它HTTP请求不规范的场景场景1 query的参数有空格,未经过unlencode编码curl -v http://127.0.0.1/log?namewzjchannelGoogle Play -d test.json场景2 HTTP头不规范Authorization: auth-scheme authorization-parameters 场景3 content_length和body长度不一致 原因分析 Authorization不规范导致400 ⑤ nginx是如何解析http
HTTP的请求消息格式
HTTP 规定,头部和载荷的分界线是两次 CRLF ⑥ 遗留
nginx http 499 其实没有很可怕
nginx 自身 495 496 497 状态码 参考出处
nginx踩坑系列之从http跳转到https
nginx的499状态码是怎么回事