1. 配置管理

1.1. 禁用页面 PDF 导出功能

允许匿名用户访问的页面上存在 【PDF 导出】功能,允许匿名用户将访问的页面导出为 PDF 文件(已设置匿名用户仅允许只读的权限)。当前版本(9.0.3)上没有找到专门针对匿名用户设置不允许 PDF 导出的功能。频繁的 PDF 导出操作会导致页面响应缓慢,官网的建议是直接禁用 PDF 导出插件功能。

  1. 进入后台的 Apps 管理界面
  2. 选中【system】
  3. 在出现的插件中找到【Confluence PDF Export】
  4. 选择【disable】禁用

如需启用则重复上面1~3的步骤,在第4步选择【Enable】启用

1.2. 隐藏 Word 导出功能

隐藏 Word 导出功能的主要原因同上。但是 Confluence 的系统插件中没有专门针对 Word 导出的插件功能,导出为 Word 文件的方式可以通过自定义的 HTML 页面方式实现隐藏。

  1. 进入后台管理页面
  2. 在【Look and Feel】下找到 【Custom HTML】
  3. 进入【end of the HEAD】
  4. 输入以下的代码隐藏 word 导出功能
<style>
     .no-after:after {
        content: none;
    }
   #footer-logo { display: none; }
   #action-export-word-link{ display: none}
   #exportToMsWord{ display: none} 
</style>
<script>
AJS.toInit(function(){
    jQuery('#footer').hide();
    AJS.$('#poweredby').prepend('<li><a href="https://wiki.waringid.me">虚拟的现实</a></li>');
    AJS.$('#poweredby > li').slice(-4).remove();
    AJS.$('#poweredby > li').last().addClass('no-after');
    });
</script>

2. 常用插件

2.1. Markdown 编辑

Markdown for Confluence

nl.avisi.confluence.plugins.numberedheadings

2.2. MFA 二次认证

Two Factor Authentication (2FA) for Confluence

com.miniorange.twofactor.confluence-twofactor

2.3. 画图工具

Draw.io Confluence Plugin

com.mxgraph.confluence.plugins.diagramly

Gliffy Diagrams for Confluence

nl.avisi.confluence.plugins.numberedheadings

3. 问题跟进

3.1. 页面访问错误警告 The valid characters are defined in RFC 7230 and RFC 3986

问题描述:confluence 升级到 9.2 版本后,系统日志显示部分页面的访问出现以下的警告

13-Aug-2025 08:35:45.279 INFO [http-nio-8090-exec-632] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
        java.lang.IllegalArgumentException: Invalid character found in the request target [/plugins/servlet/mobile?contentId=11534556#content/view/11534556 ]. The valid characters are defined in RFC 7230 and RFC 3986
                at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:479)
                at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:270)
                at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:935)
                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1792)
                at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
                at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1189)
                at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:658)
                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
                at java.base/java.lang.Thread.run(Thread.java:1583)

原因分析:

经了解,这个问题是高版本tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。而我们的系统在通过地址传参时,在url中传了一段json,传入的参数中有"{"不在RFC3986中的保留字段中,所以会报这个错。

解决方法:

/conf/catalina.properties中,找到最后注释掉的一行 #tomcat.util.http.parser.HttpParser.requestTargetAllow=|  ,改成tomcat.util.http.parser.HttpParser.requestTargetAllow=|{},表示把{}放行

或者在启动项增加 - 'CATALINA_OPTS=-XX:ReservedCodeCacheSize=512m -Xms2048m -Xmx4096m -javaagent:/var/agent/atlassian-agent.jar -Duser.timezone=Asia/Shanghai -Dtomcat.util.http.parser.HttpParser.requestTargetAllow=|{}# -Dconfluence.document.conversion.fontpath=/var/confluence/fonts/'

https://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html(官网各配置项说明)

  • 无标签
写评论...