2.8K Star 21K Fork 8.3K

GVPkeking / kkFileView

 / 详情

关于设置X-Base-Url后,预览链接拼接不正确的问题

已完成
创建于  
2024-05-27 17:24

版本:4.4.0
nginx代理配置如图:
输入图片说明
访问异常结果如截图:
输入图片说明

评论 (8)

安子 创建了任务
安子 修改了描述
展开全部操作日志

找到项目配置文件application.properties仔细看下nginx代理时的配置

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

我是多个项目使用这个预览服务,base.url只能设置一个项目的url,不符合预期。默认的: baseUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + servletRequest.getContextPath() + "/";
也有问题,基于上面nginx配置(去掉X-Base-Url),获取到的baseUrl的协议和端口和实际的不一致,我实际项目访问地址是https://10.91.4.211:8107/preview,但获取到的地址是:http://10.91.4.211/preview

输入图片说明
修改nginx配置如上图,获取到的baseurl如下:
输入图片说明
此时端口正确了,但协议还是不对,我的协议是https,不是http。有哪位大佬知道怎么改吗?

我不清楚是不是有其他考量,但在我想来,后端返回的imgUrls里的预览链接不应该加上host相关信息的呀,直接返回给前端:/preview/996d0bef-2ce4-4c65-925d-d1f1ea28cecbdocx/0.jpg 就可以了,host相关直接跟随当前浏览器页面就可以了,这样就灵活多了,设置nignx反向代理就不存在什么问题了

你想多了,直接nginx给kk项目单独配个二级或三级域名,baseUrl=这个域名就行了呀

感谢回复,我们场景特殊,没有域名,base.url的配置在我这边肯定行不通的,已经做过验证的。

多域名使用反代 替换方法 来实现 KK配置文件不设置任何反代域名 方法总比困难多 :smile:

问题已经完美解决,使用的是设置X-Base-Url的方法,具体设置为:

proxy_set_header X-Base-Url $scheme://$server_addr:$server_port/$1;
安子 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
Java
1
https://gitee.com/kekingcn/file-online-preview.git
git@gitee.com:kekingcn/file-online-preview.git
kekingcn
file-online-preview
kkFileView

搜索帮助

344bd9b3 5694891 D2dac590 5694891