kkfileview隐藏主页
前提
KKfileview
是非常有名的一款多格式预览服务,通过springboot
部署也十分的方便,虽然官方提供了将配置文件中的 file.upload.disable
值设置为 false
来防止被上传恶意文件,但本人作为有强迫症的典型,我希望将页面整个都隐藏或者无法访问,这样才能让我安心。
思路
因为本身业务服务就是通过 nginx
代理 kkfileview
服务来实现预览的。
1 | location /preview/ { |
但这样子就会造成演示页面暴露出去,这不是我希望的。
所以我打算通过 代理的方式 先将 8012 反向代理到一个高位端口,然后高位端口的配置里将 8012 的根目录和index return 403 ;
禁止访问。
然后再将业务服务的 preview
代理这个高位端口,以二重代理的方式解决这个问题。
解决方案
为了实现这个多级代理结构:
- NGINX 监听 19050 端口,并将请求代理到 18080 端口。
- 18080 端口的 NGINX 再将请求代理到运行在 8012 端口 的服务。
- 如果访问的是
/
或/index
,返回 “Forbidden”。
我们可以分成两部分来实现。
1. 配置 18080 端口反向代理到 8012(第一级 NGINX 代理)
首先,在 18080 端口上,配置 NGINX 将请求转发到 8012 服务。
NGINX 配置(18080 端口):
1 | server { |
说明:
- 18080 端口会直接代理到 8012 服务(除了
/
和/index
返回 403 Forbidden)。 - 配置完成后,确保检查 NGINX 配置语法,并重新加载 NGINX。
2. 配置 19050 端口代理到 18080(第二级 NGINX 代理)
然后,在 19050 端口上配置另一个 NGINX,将请求代理到 18080 端口。
NGINX 配置(19050 端口):
1 | server { |
说明:
rewrite ^/preview/(.*)$ /$1 break;
:- 这条指令将匹配
/preview/
后的所有路径,并去除/preview
前缀,使路径变成/onlinePreview
,这符合您在 18080 端口访问的路径格式。
- 这条指令将匹配
proxy_pass http://127.0.0.1:18080;
:- 将请求代理到 18080 端口。
最终实现步骤:
设置第一级代理(18080 -> 8012):
- 编辑并保存
/etc/nginx/conf.d/18080_proxy.conf
配置文件。 运行命令:
1
2
3sudo nginx -t # 检查配置语法是否正确
sudo systemctl reload nginx # 重新加载配置
- 编辑并保存
设置第二级代理(19050 -> 18080):
- 编辑并保存
/etc/nginx/conf.d/19050_proxy.conf
配置文件。 运行命令:
1
2
3sudo nginx -t # 检查配置语法是否正确
sudo systemctl reload nginx # 重新加载配置
- 编辑并保存
结果:
- 通过
http://10.99.21.159:19505/preview/onlinePreview?url=...
访问时,rewrite
指令会去掉/preview
前缀,使其代理到正确的路径http://127.0.0.1:18080/onlinePreview?url=...
。
这样,通过 19050 端口访问时,您就实现了多级代理,成功将请求通过 18080 最终代理到 8012。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 闲聊茶泡饭!