jetty 在请求URI里传入非法字符,jetty会断开连接,导致nginx认为该节点不健康
为什么80%的码农都做不了架构师?>>>
jetty 在请求URI里传入非法字符(如直接一个16进制字节A1,非%A1,用抓包TCP工具发送),jetty抛出如下错误
8.1.0.RC1、
8.1.18.v20150929、
9.3好的
如果前面代理用nginx的proxy_next_upstream,会认为该节点失效,如果请求刷的厉害,有可能所有节点都被刷成不健康状态;导致nginx返回给用户502;
org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! byte Fd in state 0at org.eclipse.jetty.util.Utf8Appendable.appendByte(Utf8Appendable.java:178)at org.eclipse.jetty.util.Utf8Appendable.append(Utf8Appendable.java:117)at org.eclipse.jetty.http.HttpURI.toUtf8String(HttpURI.java:503)at org.eclipse.jetty.http.HttpURI.getPathAndParam(HttpURI.java:687)at org.eclipse.jetty.server.Request.getRequestURI(Request.java:1024)at org.eclipse.jetty.server.Response.sendError(Response.java:364)at org.eclipse.jetty.server.Response.sendError(Response.java:419)at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:603)at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:971)at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1033)at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:231)at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:696)at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:53)at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)at java.lang.Thread.run(Thread.java:695)
8.1.18在处理请求的时候,utf-8转码失败会使用ios-8859-1,找不到返回404
2015-11-16 15:37:43.763:WARN:oejs.AbstractHttpConnection:Failed UTF-8 decode for request path, trying ISO-8859-1
但是奇怪的是,在处理返回 Response.sendError,代码里调用 Request.getRequestURI,用utf-8转码,引起异常,导致直接关闭连接;
初步解决思路:
1.升9版本,但是jetty9.3默认是编译jdk8,jdk还在6跑着,风险不小
2.nginx改nginx_upstream_check_module
http://nolinux.blog.51cto.com/4824967/1594029
3.改下8.1.18的代码(手生哎),初步想法
response.sendError()--->request.getRequestURI()-->HttpURI.getPathAndParam发生NotUtf8Exception换用8599-1获取
public String getPathAndParamISO8859(){if (_path==_query)return null;return StringUtil.toString(_raw,_path,_param-_path,StringUtil.__ISO_8859_1);}
4.proxy_next_upstream 最后加个max_fails=0的节点,反正前面都错了,这个节点撑着(没人故意刷你死不了);
jetty,nginx都不算熟悉,有大牛请指导、自己记录,误人勿怪!!!!
转载于:https://my.oschina.net/greki/blog/530951
jetty 在请求URI里传入非法字符,jetty会断开连接,导致nginx认为该节点不健康相关推荐
- 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
使用Tomcat8部署项目时,有接口会报400错误,后端提示在请求目标中找到无效字符.有效字符在RFC 7230和RFC 3986中定义 原因 在日志显示的请求地址中包含非法字符,出现400错误 to ...
- SharePoint 2013的限制(三)非法字符
SharePoint里有一些字符是不被允许使用的.比如SharePoint默认会阻止上传一些类型的文件,比如exe. 再比如,上传名字含有{}的文件,会得到如下提示: 除此之外,SharePoint还 ...
- java.net.URISyntaxException: Illegal character in query at index,http请求url中有非法字符导致
在url中包含('|''&')这些字符直接用HttpClient请求就会报上述错误, 在网上看了一下解决办法有两种都是将非法字符进行转码再请求 列如:String url=http://bai ...
- JAVA中的URL和URI类的使用出现的非法字符问题
今天在利用URI来创建文件对象的时候出现了异常 说是urI中包含了非法字符,一看发现URI中有一个空格字符 RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z).数字(0-9).-_.~ ...
- Discuz!您当前的访问请求当中含有非法字符,已经被系统拒绝!
Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要接入第三方接口,当第三方接口向本站post数据的时候就会报&q ...
- Discuz!您当前的访问请求当中含有非法字符,已经被系统拒绝解决办法
Discuz!系统的_xss_check()函数原本的意义是为了论坛安全,防止XSS攻击,一般网站使用是不会出现什么问题的,但是有些网站要接入第三方接口,当第三方接口向本站post数据的时候就会报&q ...
- python write非法字符报错_Python爬虫实现的微信公众号文章下载器
平时爱逛知乎,收藏了不少别人推荐的数据分析.机器学习相关的微信公众号(这里就不列举了,以免硬广嫌疑).但是在手机微信上一页页的翻阅历史文章浏览,很不方便,电脑端微信也不方便. 所以我就想有什么方法能否 ...
- nginx 拦截非法字符,nginx禁止url访问特定字符,nginx过滤url访问
nginx 拦截非法字符,nginx禁止url访问特定字符,nginx过滤url访问 参考代码一 #前缀为无限,后面的精准屏蔽字符 123 #资源宝分享:www.httple.net if ($req ...
- 替换不文明词语和非法字符
//替换不文明词语和非法字符 string StrReplaceSk(string checkstr) { string repstr=""; if(Applica ...
最新文章
- 【风控模型】融合模型Bagging构建信用评分卡模型
- BlueMix与商业智能BI(第二部分:Bluemix应用创建)
- 安装spark1.3.1单机环境
- 侣信即时通讯系统全新发布
- Apache Kylin 入门 1 - 基本概念
- 人工智能在电力系统中的应用前景怎么样
- 硅谷系创业公司,这家深耕物联网22年的Fabless终于走到上市关口
- dw自动生成html,如何用Dreamweaver快速创建HTML代码
- 卡尔曼滤波原理与应用
- MongoDB(shel)-表增删改
- 掌握茼蒿施肥方式,想不高产都难。
- jetbrains intellij idea从2021.2.3版本开始需要用户登录之后才能使用,2021.2.2版本以及之前的版本不用登录
- 8086CPU学习笔记:8086的寻址方式
- XCTF mobile新手区解题记录(WP)以及一些总结和思考
- 汽车灯具、连接器IPX9K IP69K防护等级测试
- LabVIEW学习分享(2)
- Java实现 LeetCode 403 青蛙过河
- Explaining Deep Neural Networks
- “Outlook 中的搜索结果不正确,因为缺少MapiPH.dll” 的解决方法
- 席慕蓉的话,足以震碎整个心