centos 将带有Nginx的Apache超集设置为反向代理

waxmsbnn  于 2022-11-07  发布在  Nginx
关注(0)|答案(1)|浏览(174)

我有麻烦设置apache超集与Nginx作为反向代理(这可能是一个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。
谢谢你的帮助

bsxbgnwa

bsxbgnwa1#

不确定是否仍然相关,但由于您在前缀位置(/superset)上提供服务,并且即使您是传递到/的代理,werkzeug也会尝试提供不存在的/superset路由,因此出现404。
你应该定义一个前缀中间件,在这个线程中可以找到一个很好的解释:为所有Flask路由添加前缀。
然后,中间件应作为superset-config.py相关文档的一部分传递给超集/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, ]

希望这对你有帮助:)

相关问题