2017-08-24 3 views
0

Ich habe Probleme beim Einrichten von Apache-Obermenge mit Nginx als Reverse-Proxy (Dies ist wahrscheinlich ein Nginx Misconfig).Einrichten von Apache Superset mit Nginx als Reverse Proxy

Server Block von config (wenn ich etwas fehle, lassen Sie mich wissen, und ich werde es hinzufügen):

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

Ich bin in 0.0.0.0:8088 kräuseln der Lage, eine Umleitung zu erhalten Seite und meine Anfrage machen es zum Werkzeug. Aber in meinem Browser, alles ist 404.

Danke für Ihre Hilfe

+0

Anstatt '0.0.0.0' zu verwenden, versuchen Sie' 127.0.0.1' in nginx 'proxy_pass' und im Browser zu verwenden –

Antwort

0

nicht sicher, ob noch relevant, aber da Sie auf einem vorher festgelegten Standort dienen (/superset), und obwohl Sie sind Proxy-Weitergabe an /, werkzeug versucht zu bedienen /superset Route, die nicht existiert, daher 404.

Was Sie sollten, ist eine Präfix Middleware definieren, eine sehr schöne Erklärung kann in diesem Thread gefunden werden: Add a prefix to all Flask routes.

Die Middleware sollte als übergeben werden, um Obermenge/FAB als Teil des superset-config.py, relevant documentation

die Kombination der beiden Sie wahrscheinlich mit so etwas wie dies am Ende dann in Ihrem 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, ] 

Hoffnung das hilft :)