tomcat报错:further occurrences of HTTP request parsing errors will be logged at DEBUG level.

org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.

	java.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
		at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:415)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)
我用的是tomcat9,每天都会报错很多,根据catalina.xxxx-xx-xx.log和localhost_access_log.xxxx-xx-xx.log日志以及对应的时间找到报这个错的原因是每天都有很多外国ip访问tomcat,发送的请求只有“-”;

在这里插入图片描述

根据这个错误,就是请求头中有非法的字符,但是所有请求中都没有,所以就一直百度,花费了很长时间,发现localhost_access_log非法ip发送的请求并没有对应的请求方式,想到,可以通过设置这个请求方式避免这种错误,想到了nginx;
server{
		listen 端口号;
		server_name 域名;
		if ($request_method !~* GET|POST|DELETE|PUT|OPTIONS) {
            return 405;
        }
		location / {
			proxy_pass http://localhost:80;//真正的地址
		}
	}

在nginx中只放行GET、POST、DELETE、PUT、OPTIONS请求,其它请求返回405;
重启服务,跑了两天目前没有发现该错误出现,还在持续观察中。。。
若您有其他方法可以解决该问题,麻烦请告知一下

你可能感兴趣的:(nginx,tomcat,tomcat,nginx)