下午,我们一个环境启动成功,但是却无法访问,经查看启动日志,如下:
Mar 23, 2017 2:15:09 PM org.apache.coyote.http11.AbstractHttp11Processor processINFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.java.lang.ArrayIndexOutOfBoundsException: -64 at org.apache.coyote.http11.InternalInputBuffer.parseHeader(InternalInputBuffer.java:341) at org.apache.coyote.http11.InternalInputBuffer.parseHeaders(InternalInputBuffer.java:271) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)Mar 23, 2017 2:15:09 PM org.apache.coyote.http11.AbstractHttp11Processor process
INFO: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.java.lang.IllegalArgumentException: Invalid character (CR or LF) found in method name at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:131) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:993) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)但是tomcat已经正常启动了,f12中显示conneciton reset,一度怀疑是上面的问题导致,但是tail 日志,发现请求并没有到达服务器。
经telnet host 8080, 发现是通的,但是telnet ip 8080,则不通。
结论:阿里云外网端口映射失效。跟HTTP header异常没有关系(maxHttpHeaderSize设置无关),也跟HTTPS没有关系(https://m.oschina.net/question/2664787_2157255)。
SO:对于通过端口映射对外提供的服务,如果确定后台已经启动的,则使用localhost访问看下是否可用,如果可用,很可能端口失效了。