使用Nginx作为反向代理设置Apache Superset
问题描述:
我在使用Nginx作为反向代理(这可能是nginx错误配置)中设置apache超集时遇到问题。配置的使用Nginx作为反向代理设置Apache Superset
服务器块(如果我失去了一些东西,让我知道,我会添加它):
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。
中间件应该不是被传递给超/ FAB为superset-config.py
的一部分,relevant documentation
结合两个你可能会在你的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, ]
希望这有助于:)
而不是使用'0.0.0.0'尝试在nginx'proxy_pass'和浏览器中使用'127.0.0.1' –