首页 文章

使用nginx作为反向代理运行Apache Zeppelin

提问于
浏览
3

在我们当前的架构中,我们有两个apache前端服务器,在它们之前,我们有一个nginx负载均衡器 . 并且在那之前是一个nginx反向代理 .

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

我收到这样的错误: 400 HTTP method GET is not supported by this URL

以下是Chrome网络标签显示的屏幕截图:
enter image description here

我为Zeppelin添加了反向代理配置:

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在docker容器内运行,我公开了8080端口,它的主机名是:zeppelin .

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

非常感谢你们 !

2 回答

  • 3

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

    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

  • 1

    经过大量的挖掘,我最终得到了这个配置:

    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";
    }
    

    这工作得很好,谢谢大家的努力;)

相关问题