首页 > 解决方案 > Nginx 代理后面的气流 1.10.10:Oauth 重定向 URL http 而不是 https

问题描述

我正在使用官方 Helm Chart (v.7.0.0) 在 Kubernetes 上部署 Airflow 1.10.10,但我遇到了 Oauth 问题。

这是我的设置:

我的问题 - 当我尝试使用 Microsoft 帐户登录时,我收到错误消息“请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配”。- 错误是由于 Airflow 将重定向 URL 设置为http://airflow.example.com/oauth_authorized/azure而不是 http S ://airflow.example.com/oauhth_authorized/azure

我认为问题是什么

由于 nginx 向 Flask 发送 http 请求,flask 会为重定向 url 生成一个 http url 而不是 https。所以据我了解,我需要找到一种方法来告诉 Airflow/Flask 它应该使用 https 来生成重定向 URL。

我尝试了什么:

我有两种攻击角度:

1. 在 webserver_config.py 文件中明确设置基本 URL 为 https

我尝试将 environ['wsgi.url_scheme'] = 'https' 放在配置文件中,但出现“未定义环境”错误。我什至可以在 config.py 文件中设置它吗?我需要导入什么才能使其工作?

2.在nginx中设置代理头

我尝试使用 Kubernetes 注释在 Nginx 中设置多个标头,我当前的设置是:

        proxy_set_header   X-Forwarded-Proto    $scheme;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;

我也尝试设置

proxy_set_header Host $host;

但这会导致所有流量被重定向到以逗号分隔的域列表

airflow.example.com,airflow.example.com

这显然是行不通的。

我将这些设置基于Flask 文档

Nginx 配置的其余部分是我在集群中运行的官方 Nginx 入口控制器的默认设置。

有人知道问题可能是什么吗?我的两种攻角是否有效,还是我缺少第三种攻角?

非常感谢,任何帮助表示赞赏!

标签: nginxflaskoauthairflowkubernetes-ingress

解决方案


推荐阅读