当前,我在nginx之后使用Confluence 6.10.2。我有些页面的页面名称(包括字符“>”)无法访问,错误是:
HTTP状态400 –错误的请求类型异常报告
消息在请求目标中找到无效字符。有效的 字符在RFC 7230和RFC 3986中定义
说明由于以下原因,服务器无法或不会处理请求: 被视为客户错误的内容(例如,格式错误 请求语法,无效的请求消息框架或欺骗性请求 路由)。
例外
java.lang.IllegalArgumentException:在 请求目标。有效字符在RFC 7230和RFC中定义 3986 org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:474) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:764) org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1388) 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)注意 根本原因可在服务器日志中找到。
Apache Tomcat / 9.0.10
但是当我绕过反向代理访问页面时,没关系,因此在nginx中可能是个问题。
我在Confluence和nginx中读取了日志,但没有发现任何异常。
答案 0 :(得分:0)
可能您需要添加一个重写规则。
if ($request_uri ~ ^(/.*)[>](.*)$) {
return 301 $1%3E$2;
}
if ($request_uri ~ ^(/.*)[<](.*)$) {
return 301 $1%3C$2;
}
您可能希望将其放置在location
块中以限制范围。关于if
的使用,请参见this caution。