准备工作

代理配置

注意,Zeppelin除了用户登陆和解释器配置等配置在相关的接口是通过http协议进行交互外,Note和段落管理都是通过Websocket进行交互的,所以配置Zeppelin反向代理时需要启用websocket反向代理支持。

  • nginx 中启用websocket反向代理很简单,官网文档描述得很清晰,只需要在http反向代理配置文件的基础上增加以下两行配置:

    1. proxy_set_header Upgrade $http_upgrade;
    2. 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`)进行域名映射。
      
  • 做好上述准备工作,在浏览器输入zeppelin.proxy.com 对zeppelin服务进行访问,若能正常允许Paragraph则表明反向代理配置已经成功

    • 也可以打开浏览器调试控制台,若出现如下Websocket交互日志则表明代理配置成功

image.png