Flink Web 代理配置
Flink Web 为管理界面,请仅在受控网络中访问,启用身份认证,避免直接暴露到公网。
配置步骤
- 容器外 Nginx
- 单机 Docker Compose
- 集群 Kubernetes
1. 准备配置
如需部署容器外 Nginx,请先参考 Nginx 部署 完成安装和基础配置,再参考 HTTP 代理配置 或 HTTPS 代理配置 配置 HAP 代理。
以下示例统一使用:
- Nginx 配置文件:
/usr/local/nginx/conf/conf.d/hap.conf - Flink 服务地址:
http://192.168.10.30:8081
请确认容器外 Nginx 所在主机可以访问 http://192.168.10.30:8081。如果无法连通,Flink Web 代理将无法正常访问。
2. 备份配置文件
cp -p /usr/local/nginx/conf/conf.d/hap.conf /usr/local/nginx/conf/conf.d/hap.conf.bak.$(date +%Y%m%d%H%M%S)
3. 增加 Flink 代理配置
编辑 HAP 代理配置文件:
vi /usr/local/nginx/conf/conf.d/hap.conf
在 HAP 主访问地址对应的 server 配置块中新增以下 location,不要添加到 upstream hap 配置块中:
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://192.168.10.30:8081; # 请替换为实际的 Flink Web 服务地址
return 200 "ok";
}
- 将此
location添加到 HAP 主访问地址对应的server配置块中,不要放入upstream hap。 proxy_pass填写实际的 Flink Web 服务地址。- 使用 HTTPS 代理时,将配置放入监听
443 ssl的server;使用 HTTP 代理时,放入监听80的server。
与 HAP 代理配置合并示例
以下示例可直接作为 /usr/local/nginx/conf/conf.d/hap.conf 的配置参考。请根据实际环境修改 HAP 后端地址、证书路径和 Flink 服务地址。
- HTTP
- HTTPS
upstream hap {
server 服务器IP:8880; # 修改为 HAP 系统内网 IP 与端口
}
server {
listen 80;
server_name _;
access_log /data/logs/weblogs/hap.log main;
error_log /data/logs/weblogs/hap.error.log;
underscores_in_headers on;
client_max_body_size 2048m;
location / {
set $real_ip '';
if ($http_x_real_ip) {
set $real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $real_ip $remote_addr;
}
proxy_set_header X-Real-IP $real_ip;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://hap;
}
# IM 需要
location ~ /mds2 {
proxy_set_header Host $http_host;
proxy_hide_header X-Powered-By;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://hap;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
# SSE 流式响应及长连接请求
location ~ ^/(agent|api/workflow/api/sse/chat) {
set $md_real_ip '';
if ($http_x_real_ip) {
set $md_real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $md_real_ip $remote_addr;
}
proxy_buffering off;
proxy_read_timeout 30m;
proxy_send_timeout 30m;
client_max_body_size 16m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $md_real_ip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-HTTP-Method-Override "";
proxy_pass http://hap;
proxy_redirect default;
}
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://192.168.10.30:8081; # 请替换为实际的 Flink Web 服务地址
return 200 "ok";
}
}
upstream hap {
server 服务器IP:8880; # 修改为 HAP 系统内网 IP 与端口
}
server {
listen 80;
server_name _;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443 ssl;
server_name _;
access_log /data/logs/weblogs/hap.log main;
error_log /data/logs/weblogs/hap.error.log;
ssl_certificate /etc/cert/fullchain.pem; # 修改为 SSL 证书路径
ssl_certificate_key /etc/cert/privkey.pem; # 修改为 SSL 私钥路径
underscores_in_headers on;
client_max_body_size 2048m;
location / {
set $real_ip '';
if ($http_x_real_ip) {
set $real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $real_ip $remote_addr;
}
proxy_set_header X-Real-IP $real_ip;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://hap;
}
# IM 需要
location ~ /mds2 {
proxy_set_header Host $http_host;
proxy_hide_header X-Powered-By;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://hap;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
# SSE 流式响应及长连接请求
location ~ ^/(agent|api/workflow/api/sse/chat) {
set $md_real_ip '';
if ($http_x_real_ip) {
set $md_real_ip $http_x_real_ip;
}
if ($http_x_real_ip = '') {
set $md_real_ip $remote_addr;
}
proxy_buffering off;
proxy_read_timeout 30m;
proxy_send_timeout 30m;
client_max_body_size 16m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $md_real_ip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-HTTP-Method-Override "";
proxy_pass http://hap;
proxy_redirect default;
}
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://192.168.10.30:8081; # 请替换为实际的 Flink Web 服务地址
return 200 "ok";
}
}
4. 创建登录账号
登录用户名为 hap。命令中的 YourStrongPassword123 仅为示例,执行前必须替换为实际登录密码。密码只能包含英文和数字,建议使用复杂密码:
printf "hap:$(openssl passwd -apr1 'YourStrongPassword123')\n" > /usr/local/nginx/conf/conf.d/.flink_passwd
5. 检查并重载 Nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
此方式修改的是运行中的 Nginx 配置,容器重启后会失效,需要重新配置。
1. 确认 Flink 服务地址
请选择以下任一方式获取 ENV_FLINK_URL 的值:
- 查看容器环境变量
- 查看 docker-compose.yaml
在部署 HAP 的服务器上执行:
docker exec -it $(docker ps -a | grep -E 'mingdaoyun-community|mingdaoyun-hap' | awk '{print $1}') bash
在 HAP 容器中执行:
export | grep -i ENV_FLINK_URL
默认配置文件路径为 /data/mingdao/script/docker-compose.yaml。在部署 HAP 的服务器上执行:
grep -n -i 'ENV_FLINK_URL' /data/mingdao/script/docker-compose.yaml
只复制 ENV_FLINK_URL 对应的地址值,不要复制变量名或整行内容,用于替换 Nginx 配置中的 proxy_pass 地址。
2. 备份容器内 Nginx 配置
cp -p /usr/local/nginx/conf/conf.d/private.conf /usr/local/nginx/conf/conf.d/private.conf.bak.$(date +%Y%m%d%H%M%S)
3. 修改容器内 Nginx 配置
vi /usr/local/nginx/conf/conf.d/private.conf
找到访问地址对应的 server { ... } 配置块,在最后一个 } 前粘贴以下内容。
提示:通常在文件末尾的 } 上方新增一个空行,再粘贴以下配置。
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://flink:8081; # 请替换为实际的 ENV_FLINK_URL 值
return 200 "ok";
}
4. 创建登录账号
登录用户名为 hap。下面命令中的 YourStrongPassword123 仅为示例密码,执行前必须替换为实际密码。密码只能包含英文和数字,建议使用复杂密码,不要直接使用示例密码。
printf "hap:$(openssl passwd -apr1 'YourStrongPassword123')\n" > /usr/local/nginx/conf/conf.d/.flink_passwd
5. 检查并重载 Nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
6. 退出容器
exit
此方式修改的是运行中的 Nginx 配置,容器重启后会失效,需要重新配置。
Kubernetes 默认命名空间为 default。下方命令中的 -n default 表示在该命名空间中执行;如果 HAP 使用其他命名空间,请将所有命令中的 default 统一替换为实际命名空间。
1. 确认 Flink 服务地址
请选择以下任一方式获取 ENV_FLINK_URL 的值:
- 查看 config Pod 环境变量
- 查看 config.yaml
在控制节点执行以下命令:
kubectl -n default exec -it $(kubectl -n default get pod | grep config | awk '{print $1}') -- bash
在 config Pod 中执行:
export | grep -i ENV_FLINK_URL
查看完成后退出 config Pod:
exit
默认配置文件路径为 /data/mingdao/script/kubernetes/config.yaml。在控制节点执行:
grep -n -i 'ENV_FLINK_URL' /data/mingdao/script/kubernetes/config.yaml
只复制 ENV_FLINK_URL 对应的地址值,不要复制变量名或整行内容,用于替换 Nginx 配置中的 proxy_pass 地址。
2. 进入 www Pod 并备份 Nginx 配置
先查看所有 www Pod 名称:
kubectl -n default get pod | grep www
如果有多个 www Pod,请逐个完成第 2~6 步。所有 Pod 新增的 Nginx 配置、用户名和密码必须相同。
将 <www-pod> 依次替换为实际 Pod 名称,逐个进入:
kubectl -n default exec -it <www-pod> -- bash
cp -p /usr/local/nginx/conf/conf.d/private.conf /usr/local/nginx/conf/conf.d/private.conf.bak.$(date +%Y%m%d%H%M%S)
3. 修改 www Pod 内的 Nginx 配置
编辑 Nginx 配置:
vi /usr/local/nginx/conf/conf.d/private.conf
找到访问地址对应的 server { ... } 配置块,在最后一个 } 前粘贴以下内容。
提示:通常在文件末尾的 } 上方新增一个空行,再粘贴以下配置。
location /privatedeploy/mdy/monitor/flink/ {
auth_basic "Flink Web";
auth_basic_user_file /usr/local/nginx/conf/conf.d/.flink_passwd;
rewrite ^/privatedeploy/mdy/monitor/flink$ / break;
rewrite ^/privatedeploy/mdy/monitor/flink/(.*)$ /$1 break;
proxy_pass http://flink:8081; # 请替换为实际的 ENV_FLINK_URL 值
return 200 "ok";
}
4. 创建登录账号
登录用户名为 hap。下面命令中的 YourStrongPassword123 仅为示例密码,执行前必须替换为实际密码。密码只能包含英文和数字,建议使用复杂密码,不要直接使用示例密码。
printf "hap:$(openssl passwd -apr1 'YourStrongPassword123')\n" > /usr/local/nginx/conf/conf.d/.flink_passwd
5. 检查并重载 Nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
6. 退出容器
exit
访问地址
配置完成后,在浏览器访问以下地址,并使用配置的账号密码登录:
<HAP访问地址>/privatedeploy/mdy/monitor/flink/
请将 <HAP访问地址> 替换为实际的 HAP 访问地址。
登录用户名为 hap,密码为配置时设置的密码。