版本:4.4.0
nginx代理配置如图:
访问异常结果如截图:
找到项目配置文件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配置文件不设置任何反代域名 方法总比困难多
问题已经完美解决,使用的是设置X-Base-Url的方法,具体设置为:
proxy_set_header X-Base-Url $scheme://$server_addr:$server_port/$1;
登录 后才可以发表评论