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

Posted

技术标签:

【中文标题】使用 nginx 作为反向代理运行 Apache Zeppelin【英文标题】:Running Apache Zeppelin with nginx as reverse proxy 【发布时间】:2017-08-09 07:38:56 【问题描述】:

在我们当前的架构中,我们有两个 apache 前端服务器,在它们前面,我们有一个 nginx 负载均衡器。前面还有一个 nginx 反向代理。

我的问题是我正在尝试通过反向代理运行 Apache Zeppelin,而我在使用 websockets 时遇到了一些问题。

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

下面是 Chrome 的“网络”标签显示的屏幕截图:

我为 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。

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

非常感谢你们!

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

这不适用于最新版本的 Zeppelin 和 Nginx。有任何想法吗?我尝试使用与您相同的配置。 我实际上只是将它用于 Zeppelin 0.8.2 + Nginx 1.16.1,它按预期工作【参考方案2】:

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

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

效果很好,谢谢大家的努力;)

【讨论】:

这不适用于最新版本的 Zeppelin 和 Nginx。有任何想法吗?我的配置和你的一样。 从那以后我就没有和 Zeppelin 合作过,希望你找到解决办法:D

以上是关于使用 nginx 作为反向代理运行 Apache Zeppelin的主要内容,如果未能解决你的问题,请参考以下文章

Apache的网站,使用Nginx进行反向代理(1个IP绑定多个域名,对应多个网站)解决方案

nginx反向代理

nginx 作为反向代理实现负载均衡的例子

Laravel - 所有路由上的 NGINX + Apache 反向代理 404

初识keepalived——keepalived与nginx代理实现高可用

如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理