准备工作
- Nginx下载安装(http://nginx.org/en/download.html 选择自己的系统对应的安装包)
- Zeppelin服务安装(http://zeppelin.apache.org/download.html 或者到钉钉群下载最新版本 (钉钉群号:34038239)
代理配置
注意,Zeppelin除了用户登陆和解释器配置等配置在相关的接口是通过http协议进行交互外,Note和段落管理都是通过Websocket进行交互的,所以配置Zeppelin反向代理时需要启用websocket反向代理支持。
nginx 中启用websocket反向代理很简单,官网文档描述得很清晰,只需要在http反向代理配置文件的基础上增加以下两行配置:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
新增这两行配置后Nginx会在Http请求头中自动加上以下Header信息,这表示Nginx向后端Zeppelin服务发起请求时会自动升级协议为WebSocket协议
Upgrade: websocket Connection: Upgrade
下面给出一个完整的Zeppelin反向代理配置示例以供参考: ```bash worker_processes 1;
events { worker_connections 1024; }
http { map $http_upgrade $connection_upgrade { default upgrade; ‘’ close; }
upstream zeppelin {
# 这里的localhost:8080需要替换成你自己的zeppelin服务地址
server localhost:8080 weight=2 max_fails=2 fail_timeout=2;
}
server {
listen 80;
# 这里的zeppelin.proxy.com需要换成你自己的域名,最终会用它访问Nginx
server_name zeppelin.proxy.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
location / {
proxy_set_header Host $host:$server_port;
proxy_http_version 1.1;
proxy_connect_timeout 40s;
proxy_read_timeout 120s;
proxy_send_timeout 60s;
proxy_pass http://zeppelin;
# websocket代理相关请求头配置
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
} ```
配置验证
注意,配置完Nginx代理配置文件后还需要执行以下步骤以保证配置生效
- 启动ZeppelinServer(如果已经启动则忽略该步骤):
$ZEPPELIN_HOME/bin/zeppelin-daemon.sh start
- 启动Nginx服务(如已启动则忽略)
- 刷新Nginx配置:
nginx -s reload
最后如果没有域名解析服务的话需要在你访问Zeppelin服务的客户机/etc/hosts文件中对上面配置的
用于访问Nginx的域名(我这里使用的是`zeppelin.proxy.com`)进行域名映射。
- 启动ZeppelinServer(如果已经启动则忽略该步骤):
做好上述准备工作,在浏览器输入
zeppelin.proxy.com
对zeppelin服务进行访问,若能正常允许Paragraph则表明反向代理配置已经成功- 也可以打开浏览器调试控制台,若出现如下Websocket交互日志则表明代理配置成功