以nginx作为反向代理运行Apache Zeppelin

问题描述:

在我们当前的体系结构中,我们有两个apache前端服务器,在它们之前,我们有一个nginx负载均衡器。并且在那个nginx反向代理之前。以nginx作为反向代理运行Apache Zeppelin

我的问题是,我试图通过反向代理运行Apache Zeppelin,并且我遇到了一些websockets问题。

我得到这样一个错误:400 HTTP method GET is not supported by this URL

这里是什么样的Chrome的网络选项卡显示的截图: enter image description here

添加我的反向代理配置为飞艇:

error_log /var/log/nginx/nginx_error.log warn; 
server { 
    listen  80; 
    server_name localhost; 

    location /zeppelin/ { 
     proxy_pass http://zeppelin:8080/; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade websocket; 
     proxy_set_header Connection upgrade; 
    } 

    # fallback 
    location/{ 
     return 301 http://ci.blablalablab.com/app/; 
    } 
} 

Zeppelin在码头集装箱内运行,我公开了8080端口,其主机名是:zeppelin。

如果您对架构有任何疑问,请不要犹豫。

非常感谢你们!

您可以添加到您的反向代理配置

location /ws { # For websocket support 
    proxy_pass http://zeppelin:8080/ws; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade websocket; 
    proxy_set_header Connection upgrade; 
    proxy_read_timeout 86400; 
} 

参考:Zeppelin 0.7 auth docs

很多周围挖后,我结束了此配置:

location /zeppelin/ { 
    proxy_pass http://zeppelin:8080/; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_redirect off; 
} 


location /zeppelin/ws { 
    proxy_pass http://zeppelin:8080/ws; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "Upgrade"; 
} 

这是工作很不错,谢谢大家的努力;)