Nginx 代理后面的气流 1.10.10:Oauth 重定向 URL http 而不是 https

Ben*_*Ben 6 oauth nginx flask airflow kubernetes-ingress

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

这是我的设置:

  • 启用 RBAC 的 Airflow Web 服务器。在本例中,Airflow 使用 Flask Appabuilder。
  • 服务器在 Nginx 反向代理后面运行,该代理执行 https 终止。
  • 我尝试使用 OAuth 对 Azure AD 租户进行身份验证

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

我认为问题是什么

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

我尝试过的:

我有两个攻击角度:

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

我尝试将 environ['wsgi.url_scheme'] = 'https' 放入配置文件中,但收到“environ is not Defined”错误。我可以在 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;
Run Code Online (Sandbox Code Playgroud)

我也尝试设置

proxy_set_header Host $host;
Run Code Online (Sandbox Code Playgroud)

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

airflow.example.com,airflow.example.com
Run Code Online (Sandbox Code Playgroud)

这显然不起作用。

我根据Flask 文档进行这些设置。

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

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

非常感谢,非常感谢任何帮助!