簡體   English   中英

使用 Nginx 作為反向代理設置 Apache Superset

[英]Setting up Apache Superset with Nginx as Reverse Proxy

我在使用 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。

謝謝你的幫助

不確定是否仍然相關,但由於您在前綴位置( /superset )上提供服務,即使您是代理傳遞到/ ,werkzeug 也在嘗試提供不存在的/superset路由,因此是 404。

您應該定義一個前綴中間件,可以在此線程中找到一個非常好的解釋: Add a prefix to all Flask routes

中間件應該作為superset-config.py一部分傳遞給 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, ]

希望這可以幫助 :)

我已經用這個配置測試了 mod_auth_cas:

將 AnonymousUserMixin 分配給真實用戶

有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM