org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误 注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。
26-Oct-2025 08:23:46.134 信息 [catalina-exec-30] org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误 注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。 java.lang.IllegalArgumentException: 在HTTP协议中发现无效字符[RTSP/1.00x0d0x0a0x0d0x0a...] at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:553) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1831) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:834) 怎么配置禁止以上错误的产生?
这个错误是由于客户端发送了不符合HTTP协议的请求(看起来是RTSP协议)到Tomcat的HTTP端口导致的。要解决这个问题,有几种配置方法:
1. 配置Tomcat的连接器(Connector)
在 server.xml 中配置Connector来拒绝非法请求:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxHttpHeaderSize="8192"
maxPostSize="10485760"
maxSavePostSize="4096"
parseBodyMethods="POST,PUT,PATCH"
allowHostHeaderMismatch="false"
relaxedPathChars=""
relaxedQueryChars=""/>
关键参数:
-
relaxedPathChars和relaxedQueryChars:设置为空字符串,禁用对特殊字符的宽松处理
2. 使用阀门(Valve)过滤请求
在 server.xml 的 Host 部分添加过滤阀门:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.\d+\.\d+|127\.0\.0\.1"
deny=""/>
或者使用请求过滤阀门:
<Valve className="org.apache.catalina.valves.RequestFilterValve"
allow=".*"
deny=".*RTSP.*"/>
3. 配置防火墙规则
阻止非HTTP流量到达Tomcat端口:
# 示例:只允许HTTP流量(端口80/443)
iptables -A INPUT -p tcp --dport 8080 -m string --string "RTSP" --algo bm -j DROP
4. 应用程序层过滤
在web应用的web.xml中添加安全约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Resources</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
5. 修改日志级别(不推荐)
虽然不能阻止错误产生,但可以减少日志输出:
在 logging.properties 中添加:
org.apache.coyote.level = WARNING
org.apache.catalina.level = WARNING
推荐解决方案
最佳做法是第一种方案,通过配置Tomcat Connector来严格验证HTTP请求。同时建议:
-
检查客户端为什么发送RTSP请求到HTTP端口
-
确保网络配置正确,RTSP流量应该指向专门的流媒体服务器
-
考虑在网络层面隔离不同类型的流量
这种错误通常表明有配置错误或网络扫描活动,从根本上解决问题比单纯抑制错误日志更重要。
浙公网安备 33010602011771号