####################################### 一、服务器基础配置(不可动态配置,需重启生效)####################################### ####################### 1.1 服务器网络配置 ####################### # 服务器端口号,默认8012,可通过环境变量 KK_SERVER_PORT 覆盖 # 修改端口后需重启服务生效 server.port = ${KK_SERVER_PORT:8012} # 服务器上下文路径,默认为根路径,可通过环境变量 KK_CONTEXT_PATH 覆盖 # 示例:设置为 /preview 后,访问地址为 http://localhost:8012/preview server.servlet.context-path = ${KK_CONTEXT_PATH:/} # 服务器请求和响应编码字符集,设置为UTF-8以支持中文和国际化 server.servlet.encoding.charset = utf-8 ####################### 1.2 服务器性能优化配置 ####################### # 启用GZIP压缩功能,减少网络传输数据量,提升页面加载速度 # 建议在生产环境中开启以节省带宽 server.compression.enabled = true # 允许压缩的响应缓冲区最小字节数,默认为2048字节 # 小于此值的响应不压缩,避免小文件压缩反而增加开销 server.compression.min-response-size = 2048 # 支持GZIP压缩的MIME类型列表,包括常见的前端资源格式 # 可根据需要添加或删除特定的MIME类型 server.compression.mime-types = application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain,font/woff,application/font-woff,font/eot,image/svg+xml,image/x-icon ####################### 1.3 文件上传限制配置 ####################### # 单个文件上传最大限制,默认为500MB # 根据业务需求和服务器内存大小调整 spring.servlet.multipart.max-file-size = 500MB # 整个请求体(含多个文件)最大限制,默认为500MB # 设置时应大于等于 max-file-size spring.servlet.multipart.max-request-size = 500MB ####################### 1.4 FreeMarker模板引擎配置 ####################### # FreeMarker模板加载路径,默认为classpath下的web目录 # 模板文件应放置在此目录下 spring.freemarker.template-loader-path = classpath:/web/ # 是否启用模板缓存,开发环境建议设置为false,生产环境建议设置为true # false: 每次请求都重新加载模板,便于调试 # true: 缓存模板,提升性能 spring.freemarker.cache = false # 模板文件编码,设置为UTF-8以支持中文和国际化字符 spring.freemarker.charset = UTF-8 # 检查模板位置是否存在,启动时验证模板路径 spring.freemarker.check-template-location = true # 模板内容类型,设置为HTML格式 spring.freemarker.content-type = text/html # 将HTTP请求属性暴露给模板,便于模板访问请求参数、头部等信息 spring.freemarker.expose-request-attributes = true # 将HTTP会话属性暴露给模板,便于模板访问会话数据 spring.freemarker.expose-session-attributes = true # 设置模板中访问请求上下文的变量名 # 在模板中使用 ${request} 访问请求对象 spring.freemarker.request-context-attribute = request # 模板文件后缀,默认为.ftl # 模板文件应命名为 *.ftl spring.freemarker.suffix = .ftl ####################### 1.5 Spring Boot健康监控配置 ####################### # 开启的健康检查端点,包括health、info、metrics # health: 应用健康状态 # info: 应用基本信息 # metrics: 应用性能指标 management.endpoints.web.exposure.include = health,info,metrics # 健康检查端点显示详细信息的策略,默认为always(总是显示) # 生产环境建议设置为 when-authorized 或 never,避免敏感信息泄露 management.endpoint.health.show-details = always # 启用默认的健康检查组件,监控应用核心组件状态 management.health.defaults.enabled = true ####################################### 二、Office文档处理配置(部分支持动态配置)####################################### ####################### 2.1 Office组件安装路径配置 ####################### # OpenOffice或LibreOffice安装路径,默认为default表示使用系统默认路径 # Windows示例(注意双反斜杠):C:\\Program Files (x86)\\OpenOffice 4 # Linux示例:/opt/libreoffice # MacOS示例:/Applications/LibreOffice.app/Contents office.home = ${KK_OFFICE_HOME:default} ####################### 2.2 Office转换服务配置 ####################### # Office转换服务监听的端口,默认开启两个进程分别监听2001和2002端口 # 多个端口用逗号分隔,系统会自动启动多个进程处理转换任务 office.plugin.server.ports = 2001,2002 # Office转换任务总超时时间,默认为5分钟 # 超过此时间的任务将被强制终止,释放资源 office.plugin.task.timeout = 5m # Office进程在重启前可执行的最大任务数,默认为200 # 0表示无限,不重启。适当限制可避免内存泄漏 office.plugin.task.maxtasksperprocess = 200 # Office任务执行超时时间,默认为5分钟 # 单个任务处理超过此时间将被中止,处理下一个任务 office.plugin.task.taskexecutiontimeout = 5m ####################### 2.3 Office转换参数配置(支持动态更新)####################### # 是否启用Office文档分页转换,默认为false(转换全部页面) # 可设置为页面范围,如"1-5"表示只转换前5页 office.pagerange = ${KK_OFFICE_PAGERANGE:false} # 是否启用Office文档水印功能,默认为false(不启用) # 启用后会在转换的图片或PDF上添加水印 office.watermark = ${KK_OFFICE_WATERMARK:false} # Office文档转图片的JPEG压缩质量,范围1-100,默认80 # 值越高图片质量越好但文件越大,建议80-90之间 office.quality = ${KK_OFFICE_QUALITY:80} # Office文档转图片的最大分辨率DPI,默认150 # 值越高图片越清晰但文件越大,转换时间越长 # 建议范围:72(屏幕显示)-300(打印质量) office.maximageresolution = ${KK_OFFICE_MAXIMAGERESOLUTION:150} # 是否导出Office文档中的书签到PDF,默认为true(导出) # 保留书签可方便PDF文档导航 office.exportbookmarks = ${KK_OFFICE_EXPORTBOOKMARKS:true} # 是否将Office文档中的批注作为PDF注释导出,默认为true(导出) # 保留批注便于文档审阅 office.exportnotes = ${KK_OFFICE_EXPORTNOTES:true} # 加密文档生成的PDF是否添加密码,默认为true(添加) # 密码为原始加密文档的密码,增强文档安全性 office.documentopenpasswords = ${KK_OFFICE_DOCUMENTOPENPASSWORD:true} # Excel文档(xlsx)的前端解析方式,默认为web(Web端解析) # web: 使用前端SheetJS库解析,减轻服务器压力 # image: 服务器转换为图片,兼容性更好 office.type.web = ${KK_OFFICE_TYPE_WEB:web} ####################################### 三、文件存储与缓存配置 ####################################### ####################### 3.1 文件存储路径配置 ####################### # 预览生成资源的存储路径,默认为应用根路径下的file目录 # Windows示例:D:\\kkFileview\\(注意双反斜杠) # Linux示例:/opt/kkfileview/file/ # 重要:确保应用有该目录的读写权限 file.dir = ${KK_FILE_DIR:default} # 允许预览的本地文件夹路径,默认为default(禁止所有本地文件预览) # ⚠️ 安全警告:配置此路径可能允许访问系统文件,请谨慎配置 # Windows示例(注意前面加反斜杠):\D:\\kkFileview\\1\\1.txt # Linux示例(注意前面加正斜杠):/opt/1.txt # 使用file协议访问:file://d:/1/1.txt(Windows)或 file:/opt/1/1.txt(Linux) local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default} ####################### 3.2 缓存核心配置 ####################### # 是否启用缓存功能,默认为true(启用) # 启用缓存可显著提升重复文件的预览速度 cache.enabled = ${KK_CACHE_ENABLED:true} # 缓存实现类型,默认为jdk(使用JDK内置对象实现) # 可选值: # jdk: JDK内置ConcurrentHashMap,单机部署推荐 # redis: Redis分布式缓存,集群部署推荐 # default: 内嵌RocksDB,支持持久化 cache.type = ${KK_CACHE_TYPE:jdk} ####################### 3.3 Redis缓存详细配置(仅当cache.type=redis时生效)####################### # Redis部署模式,默认为single(单机模式) # 可选值: # single: 单机模式(默认) # cluster: 集群模式 # sentinel: 哨兵模式(高可用) # master-slave: 主从模式 spring.redisson.mode = single # Redis连接地址,支持多种格式: # 单机模式:redis://127.0.0.1:6379 # 集群模式:redis://node1:6379,redis://node2:6379,redis://node3:6379 # 哨兵模式:redis://sentinel1:26379,redis://sentinel2:26379 spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:redis://127.0.0.1:6379} # Redis连接密码,无密码时留空 # 注意:密码包含特殊字符时需使用URL编码 spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:} # Redis数据库索引,默认为0(0-15) # 不同业务可使用不同数据库隔离 spring.redisson.database = ${KK_SPRING_REDISSON_DATABASE:0} ####################### 3.4 缓存维护配置 ####################### # 是否启用缓存自动清理,默认为true(启用) # 定期清理过期缓存,避免磁盘空间无限增长 cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true} # 缓存自动清理时间,使用Quartz cron表达式,默认为每天凌晨3点执行 # 表达式格式:秒 分 时 日 月 周 年(可选) # 0 0 3 * * ? 表示每天3:00:00执行清理 cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?} ####################################### 四、安全与访问控制配置(支持动态配置)####################################### ####################### 4.1 服务地址配置 ####################### # 提供预览服务的完整地址,默认从请求URL自动获取 # 当使用Nginx等反向代理时,必须手动设置此地址 # 示例:https://file.keking.cn # 示例:http://192.168.1.100:8012 base.url = ${KK_BASE_URL:default} ####################### 4.2 信任主机白名单配置(重要安全配置)####################### # 信任站点白名单配置,多个域名用逗号隔开 # ⚠️ 安全提示:为防止SSRF(服务器端请求伪造)攻击,必须配置信任主机 # ⚠️ 如果不配置,系统将默认拒绝所有外部文件预览请求 # # 配置示例: # trust.host = kkview.cn,yourdomain.com,cdn.example.com,192.168.1.* # # 支持通配符: # * 匹配所有字符 # ? 匹配单个字符 # 192.168.* 匹配192.168开头的所有IP # # 当前配置:允许所有域名(仅建议测试环境使用,生产环境必须修改) trust.host = * ####################### 4.3 不信任主机黑名单配置 ####################### # 不信任站点黑名单配置,多个用逗号隔开 # 黑名单优先级高于白名单,设置后将禁止预览来自这些站点的文件 # 建议配置:禁止访问内网地址和本地地址,防止内部信息泄露 # # 配置示例: # not.trust.host = localhost,127.0.0.1,0.0.0.0,192.168.*,10.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,172.28.*,172.29.*,172.30.*,172.31.* not.trust.host = ${KK_NOT_TRUST_HOST:default} ####################### 4.4 文件类型安全限制 ####################### # 禁止上传和预览的文件类型,多个用逗号隔开 # 默认禁止可执行文件和系统文件,防止恶意文件上传 # exe: Windows可执行文件 # dll: Windows动态链接库 # dat: 数据文件(可能包含敏感信息) prohibit = ${KK_PROHIBIT:exe,dll,dat} ####################################### 五、文件格式与预览配置(支持动态配置)####################################### ####################### 5.1 文本文件类型配置 ####################### # 支持的文本文件类型,多个用逗号隔开 # 这些文件将直接在前端以文本形式展示,无需转换 # 默认支持常见编程语言、配置文件和文档格式 simText = ${KK_SIMTEXT:txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd} ####################### 5.2 多媒体文件类型配置 ####################### # 支持的媒体文件类型,多个用逗号隔开 # 这些文件将使用HTML5原生播放器或转换后播放 # 默认支持主流音频、视频和流媒体格式 media = ${KK_MEDIA:mp3,wav,mp4,flv,mpd,m3u8,ts,mpeg,m4a} # 支持格式转换的视频类型,多个用逗号隔开 # 这些格式的视频将被转换为mp4格式以确保浏览器兼容性 # ⚠️ 视频转换消耗资源较大,建议根据服务器性能配置 convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm,mpeg} ####################### 5.3 图片文件类型配置 ####################### # TIF/TIFF格式图片预览模式,可选值:jpg、pdf # tif: 使用前端Tiff.js插件直接浏览(需要浏览器支持) # jpg: 服务器转换为JPG格式后显示(兼容性好) # pdf: 服务器转换为PDF格式显示(支持多页和打印) tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif} # CAD设计文件预览模式,可选值:tif、svg、pdf # tif: 转换为TIFF格式,使用前端插件浏览 # svg: 转换为SVG矢量格式(缩放不失真) # pdf: 转换为PDF格式(便于打印和标注) cad.preview.type = ${KK_CAD_PREVIEW_TYPE:svg} ####################### 5.4 Office文档预览配置 ####################### # Office类型文档(Word、PPT、Excel)预览样式,可选值:image、pdf # image: 转换为图片序列(兼容性好,支持水印) # pdf: 转换为PDF格式(支持文本复制、打印) # 用户可在预览界面切换模式(除非禁用切换开关) office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image} # 是否关闭Office预览模式切换开关,默认为false(允许切换) # 设置为true时,用户无法在图片和PDF模式间切换 office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false} ####################### 5.5 PDF文档预览配置 ####################### # PDF文件预览安全限制配置 # 是否禁止PDF演示模式,默认为true(禁止) pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true} # 是否禁止PDF文件菜单中的"打开文件"选项,默认为true(禁止) pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true} # 是否禁止PDF打印功能,默认为true(禁止) pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true} # 是否禁止PDF下载功能,默认为true(禁止) pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true} # 是否禁止PDF书签/大纲功能,默认为true(禁止) pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true} # 是否禁止PDF编辑功能(注释、表单等),默认为false(允许编辑) pdf.disable.editing = ${KK_PDF_DISABLE_EDITING:false} ####################### 5.6 水印配置 ####################### # 水印文本内容,为空表示不添加水印 # 示例:内部文件,严禁外泄 watermark.txt = ${WATERMARK_TXT:} # 水印在X轴方向的间隔(像素),默认为10 # 值越小水印越密集,值越大水印越稀疏 watermark.x.space = ${WATERMARK_X_SPACE:10} # 水印在Y轴方向的间隔(像素),默认为10 watermark.y.space = ${WATERMARK_Y_SPACE:10} # 水印字体,默认为"微软雅黑" # 注意:服务器需要安装对应字体,Linux服务器可能需要安装中文字体 watermark.font = ${WATERMARK_FONT:微软雅黑} # 水印字体大小,默认为18px # 建议根据水印文本长度调整 watermark.fontsize = ${WATERMARK_FONTSIZE:18px} # 水印字体颜色,默认为black(黑色) # 支持格式:颜色名(black, white, red等)、十六进制(#000000)、RGB(rgb(0,0,0)) watermark.color = ${WATERMARK_COLOR:black} # 水印透明度,范围0.005-1,默认为0.2(20%不透明度) # 值越小水印越淡,值越大水印越明显 watermark.alpha = ${WATERMARK_ALPHA:0.2} # 单个水印块的宽度(像素),默认为180 # 需要根据水印文本长度调整 watermark.width = ${WATERMARK_WIDTH:180} # 单个水印块的高度(像素),默认为80 watermark.height = ${WATERMARK_HEIGHT:80} # 水印倾斜度数,范围0-90,默认为10度 # 0度:水平水印,90度:垂直水印 watermark.angle = ${WATERMARK_ANGLE:10} # CAD文件是否添加水印,默认为true(启用) cad.watermark = true ####################################### 六、性能与资源管理配置(支持动态配置)####################################### ####################### 6.1 线程池配置 ####################### # PDF转换最大并发线程数,默认为10 # 根据服务器CPU核心数调整:建议为核心数×2 pdf.max.threads = 10 # CAD转换线程数,默认为5 # CAD转换较耗时,不宜设置过高 cad.thread = ${KK_CAD_THREAD:5} # TIF转换线程数,默认为5 tif.thread = 5 ####################### 6.2 超时配置(按文件大小分类)####################### # 是否启用视频转换超时控制,默认为true(启用) media.timeout.enabled = true # 视频文件大小分类及超时时间(单位:秒) # 小文件(<50MB):30秒超时 media.small.file.timeout = 30 # 中等文件(50-150MB):60秒超时 media.medium.file.timeout = 60 # 大文件(150-300MB):180秒超时(3分钟) media.large.file.timeout = 180 # 超大文件(300-600MB):300秒超时(5分钟) media.xl.file.timeout = 300 # XXL文件(600-1200MB):600秒超时(10分钟) media.xxl.file.timeout = 600 # XXXL文件(>1200MB):1200秒超时(20分钟) media.xxxl.file.timeout = 1200 ####################### 6.3 超时配置(按PDF页数分类)####################### # PDF文件按页数分类的超时配置(单位:秒) # 小文件(0-50页):90秒超时 pdf.timeout.small = 90 # 中等文件(51-200页):180秒超时(3分钟) pdf.timeout.medium = 180 # 大文件(201-500页):300秒超时(5分钟) pdf.timeout.large = 300 # 超大文件(>500页):600秒超时(10分钟) pdf.timeout.xlarge = 600 # CAD转换超时时间,默认为90秒 cad.timeout = ${KK_CAD_TIMEOUT:90} # TIF转换超时时间,默认为90秒 tif.timeout = 90 ####################### 6.4 资源限制配置 ####################### # 视频转换最大文件大小限制(单位:MB),默认为300MB # 超过此大小的视频文件禁止转换,避免服务器资源耗尽 media.convert.max.size = 300 # 是否禁用视频格式转换功能,默认为true(禁用) # ⚠️ 重要:视频转换非常消耗CPU和内存资源 # 启用前确保:1)服务器性能充足 2)配置异步处理 3)增加线程池 media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:true} ####################### 6.5 DPI优化配置 ####################### # 是否启用PDF DPI智能调整,默认为true(启用) # 根据PDF页数自动调整DPI,平衡清晰度和性能 pdf.dpi.enabled = true # PDF转图片的基准DPI,默认为144 # 当DPI优化禁用时使用此值 pdf2jpg.dpi = ${KK_PDF2JPG_DPI:144} # PDF按页数范围的DPI优化值 # 小文件(0-50页):150 DPI(高质量) pdf.dpi.small = 150 # 中等文件(50-100页):120 DPI(平衡质量与性能) pdf.dpi.medium = 120 # 大文件(100-200页):96 DPI(优化性能) pdf.dpi.large = 96 # 超大文件(200-500页):72 DPI(快速转换) pdf.dpi.xlarge = 72 # 巨量文件(>500页):72 DPI(最小资源消耗) pdf.dpi.xxlarge = 72 ####################################### 七、FTP文件访问配置(支持动态配置)####################################### ####################### 7.1 FTP连接认证配置 ####################### #FTP模块设置 #预览源为FTP时,可在ftp url后面加参数?ftp.username=ftpuser&ftp.password=123456&ftp.control.encoding=GBK,指定,不指定默认用配置的 (为了安全我们强烈建议在配置中设置相关信息) #ftp.control.encodin (根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK) #使用方法,支持,分割第一个是域名或者IP地址后面是用户名在后面是密码,在后面是编码(用户名密码和编码用:分割, 域名用,分割),切记url不需要任何协议头 #ftp.username = 地址:端口:用户名:密码:编码,192.168.0.2:21:name:123456:UTF-8,www.xxx.com:21:admin:pass:UTF-8 多客户端,分割 #ftp.username =10.99.1.2:21:666:88888:GBK ftp.username = false ####################################### 八、首页与文件管理配置(支持动态配置)####################################### ####################### 8.1 首页功能配置 ####################### # 是否禁用首页文件上传功能,默认为false(不禁用) # 设置为true可关闭上传功能,仅用于预览 file.upload.disable = false # 网站备案信息,显示在首页底部,默认为空 # 示例:京ICP备12345678号 beian = ${KK_BEIAN:default} # 首页初始化加载的页码,默认为1(第一页) home.pagenumber = ${DEFAULT_HOME_PAGENUMBER:1} # 首页是否启用分页功能,默认为true(启用) home.pagination = ${DEFAULT_HOME_PAGINATION:true} # 首页每页显示的文件数量,默认为15 home.pagesize = ${DEFAULT_HOME_PAGSIZE:15} # 首页是否显示搜索框,默认为true(显示) home.search = ${DEFAULT_HOME_SEARCH:true} ####################### 8.2 文件删除安全配置 ####################### # 是否启用验证码验证删除文件,默认为false(不启用) # 启用后删除文件需要输入验证码,防止误删 delete.captcha = ${KK_DELETE_CAPTCHA:false} # 删除文件密码,默认为123456 # 删除文件时需要验证此密码(如果启用了验证码,两者都需要) delete.password = ${KK_DELETE_PASSWORD:123456} # 是否删除转换后的源文件,默认为true(删除) # 启用可节约磁盘空间,但会丢失原始文件 # 注意:删除后无法重新转换,只能重新上传 delete.source.file = ${KK_DELETE_SOURCE_FILE:true} ####################################### 九、权限与认证配置(支持动态配置)####################################### ####################### 9.1 功能权限配置 ####################### # 是否启用图片预览权限,默认为true(启用) # 设置为false可禁用所有图片预览功能 kk.Picturespreview = true # 是否启用跨域文件获取权限,默认为true(启用) # 设置为false可防止跨站请求伪造(CSRF) kk.Getcorsfile = true # 是否启用添加异步任务权限,默认为true(启用) # 大文件转换通常使用异步任务处理 kk.addTask = true # API密钥功能,默认为false(禁用) # 启用后需要提供密钥才能调用API kk.Key = false ####################### 9.2 加密与认证配置 ####################### # AES加密密钥,必须为16位字符 # 启用AES加密时,接入方需使用相同的密钥 # 用于敏感数据传输加密 ase.key = 1234567890123456 # Basic认证配置,格式:域名:用户名:密码,多个用逗号分隔 # 用于保护特定域名的访问 # 示例:192.168.0.1:admin:pass123,example.com:user:pass456 basic.name = 10.99.1.2:aaa:bbb # User-Agent验证字符串,默认为99999 # 可用于简单的客户端验证 useragent = 99999 ####################################### 十、高级功能与兼容性配置(支持动态配置)####################################### ####################### 10.1 SSL/TLS安全配置 ####################### # 是否忽略SSL证书验证,默认为true(忽略) # 用于开发环境或自签名证书场景 # 生产环境建议设置为false,启用完整的证书验证 kk.ignore.ssl = true ####################### 10.2 重定向功能配置 ####################### # 是否启用URL重定向功能,默认为true(启用) # 用于处理文件下载、外部资源引用等场景 kk.enable.redirect = true