You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache Superset登录后循环跳转求助(Nginx+Gunicorn代理配置)

解决Apache Superset登录后循环跳转问题(Nginx反向代理场景)

问题定位

登录后循环跳转通常是反向代理头部配置错误,导致Superset无法正确识别请求来源、会话信息不匹配,进而触发重复登录校验。结合你的配置和场景,核心问题集中在Nginx头部参数错误Superset未开启代理信任配置两方面。

解决方案

1. 修正Nginx反向代理配置

你的配置中存在X-Forward-For的拼写错误(正确应为X-Forwarded-For),同时补充必要的转发参数:

upstream superset { 
    server unix:/home/superset/gunicorn.sock; 
}

server {
    listen 80;
    server_name dashboard-superset.com;

    location / {
        proxy_pass http://superset/;
        proxy_http_version 1.1;
        # 仅在需要WebSocket时保留Upgrade/Connection,Superset常规访问可注释或调整
        # proxy_set_header Upgrade $http_upgrade;
        # proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
        proxy_set_header X-Forwarded-Port 80;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
        proxy_connect_timeout 60;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
    }

    access_log /var/log/nginx/dashboard-superset.id-access.log;
    error_log /var/log/nginx/dashboard-superset.id-error.log;    
}

2. 配置Superset信任反向代理

修改Superset的配置文件superset_config.py(通常位于/home/superset/~/.superset/目录),添加以下参数:

# 开启代理头部信任,让Superset识别Nginx转发的请求信息
ENABLE_PROXY_FIX = True
# 与Nginx监听的协议一致,http/https
PREFERRED_URL_SCHEME = 'http'
# 会话Cookie配置,http场景设为False,https场景设为True
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'

3. 重启服务生效

  • 重启Nginx:
    sudo systemctl restart nginx
    
  • 重启Superset的Gunicorn服务(根据你的启动方式调整,示例为systemd管理):
    sudo systemctl restart superset
    

验证步骤

  1. 清除浏览器缓存和Cookie,重新访问域名登录
  2. 查看Superset日志(通常在/var/log/superset/或启动日志),确认无会话验证错误
  3. 查看Nginx的access.log,确认登录后跳转的状态码为200而非重复302

内容的提问来源于stack exchange,提问作者Daily Food ASMR

火山引擎 最新活动