【问题标题】:Setting up Apache Superset with Nginx as Reverse Proxy使用 Nginx 作为反向代理设置 Apache Superset
【发布时间】:2018-02-02 12:42:12
【问题描述】:

我在使用 Nginx 作为反向代理设置 apache 超集时遇到问题(这可能是 nginx 错误配置)。

服务器配置块(如果我遗漏了什么,请告诉我,我会添加它):

server {
    listen 80 default_server;
    server_name _;
    root /var/www/data;
    error_log   /var/www/bokehapps/log/nginx.error.log info;
    location /static {
        alias /usr/lib/python2.7/site-packages/bokeh/server/static;
    }


    location /superset {
        proxy_pass http://0.0.0.0:8088;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
    }
}

我能够卷曲到 0.0.0.0:8088 以获取重定向页面,并且我的请求正在发送到 werkzeug。但在我的浏览器中,一切都是 404。

感谢您的帮助

【问题讨论】:

  • 不要使用0.0.0.0 尝试在nginx proxy_pass 和浏览器中使用127.0.0.1

标签: python nginx centos reverse-proxy superset


【解决方案1】:

不确定是否仍然相关,但由于您在前缀位置 (/superset) 上提供服务,并且即使您是代理传递到 /,werkzeug 正在尝试提供不存在的 /superset 路由,因此是 404。

你应该定义一个前缀中间件,一个很好的解释可以在这个线程中找到:Add a prefix to all Flask routes

中间件应该作为superset-config.pyrelevant documentation的一部分传递给Superset/FAB

将两者结合起来,您很可能会在 superset-config.py 中得到类似这样的内容:

class PrefixMiddleware(object):

def __init__(self, app, prefix='superset'):
    self.app = app
    self.prefix = prefix

def __call__(self, environ, start_response):

    if environ['PATH_INFO'].startswith(self.prefix):
        environ['PATH_INFO'] = environ['PATH_INFO'][len(self.prefix):]
        environ['SCRIPT_NAME'] = self.prefix
        return self.app(environ, start_response)
    else:
        start_response('404', [('Content-Type', 'text/plain')])
        return ["This url does not belong to the app.".encode()]

ADDITIONAL_MIDDLEWARE = [PrefixMiddleware, ]

希望这会有所帮助:)

【讨论】:

  • 谢谢你,我正在尝试你的解决方案,但我被困在哪里放置 superset-config.py。任何指针不胜感激。
  • @mappingdom 我在你运行superset runserver命令的同一个目录下,应该取走
  • 这是一个很好的解决方案,但会破坏大部分静态内容,因为浏览器使用 /static 前缀而不是 /superset/static 来请求它们
猜你喜欢
  • 1970-01-01
  • 2017-08-09
  • 2016-08-09
  • 2013-11-18
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多