kkfile配置https预览文件

本文介绍如何解决kkfile在HTTPS环境下预览文件时遇到的跨域问题及证书错误。通过正确配置context-path、使用nginx反向代理及调整base.url等参数实现稳定预览。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同事找我说这个kkfile预览怎么配置到https下,同一个域名访问不会跨域。

我想了下大概思路:

1.kkfile的 context全局路径可以修改 context-path,比如:server.servlet.context-path

2.使用nginx反向代理 /kkfile 转发到 kkfile路径上

首页。查找官网教程

​​​​​​kkFileView - 在线文件预览

常见问题清单也说了这个问题 

 然后配置nginx,配置反向代理 重启nginx,发现还是预览不了

报了一个错误:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

大概还是https 证书的问题,所以我就想是读取预览文件地址的问题,再看下教程

确认就是这个配置的问题 base.url地址,我用的docker启动程序,修改对于的环境编辑即可

KK_CONTEXT_PATH: /kkfile

KK_BASE_URL http://IP:端口/kkfile

#######################################不可动态配置,需要重启生效#######################################
server.port = ${KK_SERVER_PORT:8012}
server.servlet.context-path= ${KK_CONTEXT_PATH:/}
server.servlet.encoding.charset = utf-8
#文件上传限制
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB
## Freemarker 配置
spring.freemarker.template-loader-path = classpath:/web/
spring.freemarker.cache = false
spring.freemarker.charset = UTF-8
spring.freemarker.check-template-location = true
spring.freemarker.content-type = text/html
spring.freemarker.expose-request-attributes = true
spring.freemarker.expose-session-attributes = true
spring.freemarker.request-context-attribute = request
spring.freemarker.suffix = .ftl

# office-plugin
## office转换服务的进程数,默认开启两个进程
office.plugin.server.ports = 2001,2002
## office 转换服务 task 超时时间,默认五分钟
office.plugin.task.timeout = 5m

#预览生成资源路径(默认为打包根路径下的file目录下)
#file.dir = D:\\kkFileview\\
file.dir = ${KK_FILE_DIR:default}

#允许预览的本地文件夹 默认不允许任何本地文件被预览
#file.dir = D:\\kkFileview\\
local.preview.dir = ${KK_LOCAL_PREVIEW_DIR:default}


#openoffice home路径
#office.home = C:\\Program Files (x86)\\OpenOffice 4
office.home = ${KK_OFFICE_HOME:default}

#缓存实现类型,不配默认为内嵌RocksDB(type = default)实现,可配置为redis(type = redis)实现(需要配置spring.redisson.address等参数)和 JDK 内置对象实现(type = jdk),
cache.type =  ${KK_CACHE_TYPE:jdk}
#redis连接,只有当cache.type = redis时才有用
spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:127.0.0.1:6379}
spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:}
#缓存是否自动清理 true 为开启,注释掉或其他值都为关闭
cache.clean.enabled = ${KK_CACHE_CLEAN_ENABLED:true}
#缓存自动清理时间,cache.clean.enabled = true时才有用,cron表达式,基于Quartz cron
cache.clean.cron = ${KK_CACHE_CLEAN_CRON:0 0 3 * * ?}

#######################################可在运行时动态配置#######################################
#提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置
#base.url = https://file.keking.cn
base.url = ${KK_BASE_URL:default}

#信任站点,多个用','隔开,设置了之后,会限制只能预览来自信任站点列表的文件,默认不限制
#trust.host = file.keking.cn,kkfileview.keking.cn
trust.host = ${KK_TRUST_HOST:default}

#是否启用缓存
cache.enabled = ${KK_CACHE_ENABLED:true}

#文本类型,默认如下,可自定义添加
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}
#多媒体类型,默认如下,可自定义添加
media = ${KK_MEDIA:mp3,wav,mp4,flv}
#是否开启多媒体类型转视频格式转换,目前可转换视频格式有:avi,mov,wmv,3gp,rm
#请谨慎开启此功能,建议异步调用添加到处理队列,并且增加任务队列处理线程,防止视频转换占用完线程资源,转换比较耗费时间,并且控制了只能串行处理转换任务
media.convert.disable = ${KK_MEDIA_CONVERT_DISABLE:false}
#支持转换的视频类型
convertMedias = ${KK_CONVERTMEDIAS:avi,mov,wmv,mkv,3gp,rm}
#office类型文档(word ppt)样式,默认为图片(image),可配置为pdf(预览时也有按钮切换)
office.preview.type = ${KK_OFFICE_PREVIEW_TYPE:image}
#是否关闭office预览切换开关,默认为false,可配置为true关闭
office.preview.switch.disabled = ${KK_OFFICE_PREVIEW_SWITCH_DISABLED:false}

#是否禁止演示模式
pdf.presentationMode.disable = ${KK_PDF_PRESENTATION_MODE_DISABLE:true}
#是否禁止打开文件
pdf.openFile.disable = ${KK_PDF_OPEN_FILE_DISABLE:true}
#是否禁止打印转换生成的pdf文件
pdf.print.disable = ${KK_PDF_PRINT_DISABLE:true}
#是否禁止下载转换生成的pdf文件
pdf.download.disable = ${KK_PDF_DOWNLOAD_DISABLE:true}
#是否禁止bookmark
pdf.bookmark.disable = ${KK_PDF_BOOKMARK_DISABLE:true}
#是否禁用首页文件上传
file.upload.disable = ${KK_FILE_UPLOAD_ENABLED:false}

#预览源为FTP时 FTP用户名,可在ftp url后面加参数ftp.username=ftpuser指定,不指定默认用配置的
ftp.username = ${KK_FTP_USERNAME:ftpuser}
#预览源为FTP时 FTP密码,可在ftp url后面加参数ftp.password=123456指定,不指定默认用配置的
ftp.password = ${KK_FTP_PASSWORD:123456}
#预览源为FTP时, FTP连接默认ControlEncoding(根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK),可在ftp url后面加参数ftp.control.encoding=UTF-8指定,不指定默认用配置的
ftp.control.encoding = ${KK_FTP_CONTROL_ENCODING:UTF-8}

#水印内容
#例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄}
#如需取消水印,内容设置为空即可,例:watermark.txt = ${WATERMARK_TXT:}
watermark.txt = ${WATERMARK_TXT:}
#水印x轴间隔
watermark.x.space = ${WATERMARK_X_SPACE:10}
#水印y轴间隔
watermark.y.space = ${WATERMARK_Y_SPACE:10}
#水印字体
watermark.font = ${WATERMARK_FONT:微软雅黑}
#水印字体大小
watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
#水印字体颜色
watermark.color = ${WATERMARK_COLOR:black}
#水印透明度,要求设置在大于等于0.005,小于1
watermark.alpha = ${WATERMARK_ALPHA:0.2}
#水印宽度
watermark.width = ${WATERMARK_WIDTH:180}
#水印高度
watermark.height = ${WATERMARK_HEIGHT:80}
#水印倾斜度数,要求设置在大于等于0,小于90
watermark.angle = ${WATERMARK_ANGLE:10}

#Tif类型图片浏览模式:tif(利用前端js插件浏览);jpg(转换为jpg后前端显示);pdf(转换为pdf后显示,便于打印)
tif.preview.type = ${KK_TIF_PREVIEW_TYPE:tif}

最后解决了这个问题,还是没有好好看教程。

多花点时间沉下心才能有所突破,不要害怕浪费时间!

比如写博客就是一个好习惯!

<think>嗯,用户之前问过怎么修改KKFileView的请求地址,现在他们又遇到了前端调用预览服务时请求80端口的svg文件的问题,想要替换这个链接。我需要先弄清楚用户具体遇到了什么情况。 首先,KKFileView在生成预览时可能会生成一些静态资源的链接,比如SVG文件。用户提到这些链接默认使用80端口,可能是因为他们的服务部署在80端口,或者前端访问的时候被强制转到了80端口。用户希望修改这个端口或者链接,可能是他们的实际部署环境端口不同,或者想通过反向代理隐藏真实端口。 接下来,我得回想一下KKFileView配置项。之前的回答中提到了application.properties里的base.url,这个配置项可能也影响到生成的静态资源链接。所以修改base.url可能是关键步骤。此外,可能还涉及到Nginx的反向代理配置,比如将请求转发到正确的端口,同时修改Host头,避免后端生成链接时使用错误的端口。 另外,用户可能使用了Docker部署,所以环境变量的设置也可能影响生成的链接。例如,KK_CONTEXT_PATH或者SERVER_PORT这些环境变量需要正确配置,确保生成的URL符合实际部署环境。 然后,用户可能需要在前端进行一些调整,比如通过JavaScript修改请求的基础路径,或者在Nginx配置中添加重写规则,将80端口的请求转发到实际的后端端口。同时,要注意跨域问题,确保代理配置正确,避免出现CORS错误。 还要考虑用户是否遇到了缓存问题,修改配置后可能需要清理浏览器缓存或者重启服务才能生效。此外,安全设置比如kk.security.enable是否开启,可能会影响资源的访问,需要检查相关配置。 最后,需要验证修改后的配置是否生效,可以通过curl命令或者直接访问生成的链接来测试,同时查看日志文件排查问题。用户可能需要具体的步骤和示例配置,所以给出详细的Nginx配置片段和修改base.url的方法会很有帮助。</think>以下是修改KKFileView前端请求SVG文件端口的完整解决方案: --- ### **问题核心分析** KKFileView默认生成的预览链接中,SVG等静态资源会继承当前页面协议和端口。若需强制修改端口/域名,需通过以下方式调整: --- ### **解决方案** #### **一、修改基础URL配置** **配置文件路径**:`application.properties` ```properties # 强制指定资源请求域名和端口 base.url=http://your-domain.com:指定端口 # 若需隐藏端口(使用80/443默认端口) base.url=http://your-domain.com ``` **生效原理**: - 该配置控制所有生成链接的基地址 - 示例:原请求`http://localhost:8012/svg/...` → 修改后变为`http://your-domain.com:新端口/svg/...` --- #### **二、Nginx反向代理配置** **场景**:需将80端口请求转发到实际服务端口 ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:实际服务端口; # 如8012 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` **关键参数说明**: - `proxy_set_header Host` 确保后端服务识别正确域名 - `X-Forwarded-*` 系列头信息保障链接生成正确 --- #### **三、前端适配方案** **在预览页面初始化代码中添加**: ```javascript // 强制指定资源请求地址 window.CONFIG = { baseURL: 'http://your-domain.com:指定端口', filePreviewPrefix: '/onlinePreview' }; ``` --- #### **四、Docker部署特殊处理** **启动命令增加参数**: ```bash docker run -d -p 80:8012 \ # 直接映射到80端口 -e KK_BASE_URL="http://your-domain.com" \ keking/kkfileview ``` --- ### **验证方法** 1. 浏览器F12打开开发者工具 2. 在Network面板观察SVG资源请求地址: ```http GET /svg/xxx HTTP/1.1 Host: your-domain.com:指定端口 ``` 3. 命令行验证: ```bash curl -I http://your-domain.com:指定端口/svg/预览文件ID ``` --- ### **常见问题排查** 1. **端口未开放**: ```bash netstat -tunlp | grep 指定端口 ``` 2. **跨域问题**: 在Nginx配置中添加: ```nginx add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; ``` 3. **缓存问题**: - 清理浏览器缓存 - 在URL后添加随机参数:`file.svg?t=${Date.now()}` --- ### **修改效果示意图** ``` 原始请求流程: 前端 → 80端口 → KKFileView服务 修改后流程: 前端 → 80端口 → Nginx转发到实际服务端口 → KKFileView ``` 通过以上配置,可实现SVG等静态资源链接的端口及域名定制化。建议生产环境配合HTTPS使用,可通过相同原理配置443端口转发
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值