在nginx后面的Confluence的请求目标中发现无效字符

时间:2018-11-13 08:39:28

标签: nginx confluence

当前,我在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中读取了日志,但没有发现任何异常。

1 个答案:

答案 0 :(得分:0)

可能您需要添加一个重写规则。

if ($request_uri ~ ^(/.*)[>](.*)$) { 
    return 301 $1%3E$2;
}
if ($request_uri ~ ^(/.*)[<](.*)$) { 
    return 301 $1%3C$2;
}

您可能希望将其放置在location块中以限制范围。关于if的使用,请参见this caution