I noticed that if you add "garbage" characters to the URL for Confluence it brings up the following 400 error with a somewhat detailed stack trace, which includes the Apache TomCat server version (See below). Is there a way to remove the stack trace from showing up in the 400 message? Would a custom 400 redirect in Nginx help fix this? Our customer does not like the fact that it provides details about what version of Tomcat is displaying.
HTTP Status 400 – Bad Request
Type
Exception Report
Message
Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
Description
The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
Exception
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:468)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:292)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1579)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)
Note
The full stack trace of the root cause is available in the server logs.