背景:
盘古开天,晴天霹雳,甲方不允许直连数据库了。但是发现了可以使用web页面来使用clickhous数据库。
数据库版本:20.1。2018年的古老版本;那时候clickhous还没有自带的好用的web UI。
然后我找了官方文档里面所说的【第三方开发的可视化界面】:https://clickhouse.com/docs/zh/interfaces/third-party/gui
妈的,一个比一个坑爹:
chrtdb压根编译不了,找到的容器也是不支持clickhouse的版本;
tabix呢,能用,但是它不支持反向代理,严格的来说是不支持非根目录的代理,至少我没有找到方法;
但是我还是找到了一个,灯塔:LightHouse;
使用方法:
https://github.com/VKCOM/lighthouse
只需克隆此存储库并在浏览器中使用 index.html。 如果您需要指定用户名(例如 XXX),请在您的 URL 中添加 “/?user=XXX”,例如 “http://127.0.0.1:8123/?user=XXX”。 如果您想强制使用基本身份验证而不是基于 URL 的身份验证(基本身份验证不适用于 CORS,请小心),请添加 “/?basic_user=XXX”。
很简单。
事实却是如此:
我的clickhouse设置了密码的,我这有使用:
输入clickhouse的密码:
就进去了:
部署到容器中去
构建镜像就不细说了:
[root@test lighthouse]# pwd /root/lighthouse [root@test lighthouse]# ll 总用量 4 -rw-r--r-- 1 root root 66 10月 31 21:48 Dockerfile drwxr-xr-x 5 root root 119 7月 29 2020 lighthouse-master [root@test lighthouse]# cat Dockerfile FROM nginx:alpine COPY ./lighthouse-master /usr/share/nginx/html [root@test lighthouse]# [root@test lighthouse]# docker run -d -p 8088:80 lighthouse
正常使用:
反向代理这个容器
由于我的内网和外网之间只有80端口是通的,所以还需要另一个nginx来做反向代理:
http{ server { listen 18080; # 监听80端口;别介意,这个只是我家里面的环境,80端口被另外的程序使用了。 # server_name your_domain.com; # 替换为你的域名或IP地址 location /myapp/ { proxy_pass http://192.168.25.6:8088/; # 将请求转发到 Docker 容器的80端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; # 支持WebSocket proxy_set_header Connection 'upgrade'; # 支持WebSocket proxy_set_header Host $host; # 保留原始主机头 proxy_set_header X-Real-IP $remote_addr; # 获取客户端真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发的IP proxy_set_header X-Forwarded-Proto $scheme; # 转发的协议 } } }
加载之后,访问:
搞定!
致谢
我很感激这个项目的开发者,但是这个存储库已经归档了。
标签:20.1,lighthouse,set,web,header,UI,proxy,root,clickhouse From: https://www.cnblogs.com/love-DanDan/p/18519054