nginx - Nginx 代理后面的气流 1.10.10:Oauth 重定向 URL http 而不是 https
问题描述
我正在使用官方 Helm Chart (v.7.0.0) 在 Kubernetes 上部署 Airflow 1.10.10,但我遇到了 Oauth 问题。
这是我的设置:
- 启用了 RBAC 的 Airflow Web 服务器。在这种情况下,Airflow 使用 Flask Appabuilder。
- 服务器在执行 https 终止的 Nginx 反向代理之后运行。
- 我尝试使用 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 会为重定向 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 入口控制器的默认设置。
有人知道问题可能是什么吗?我的两种攻角是否有效,还是我缺少第三种攻角?
非常感谢,任何帮助表示赞赏!
解决方案
推荐阅读
- c# - 尽管从导航集合中删除了实体,但 Entity Framework 6 ChangeTracker 条目均未更改
- python - Scrapy - FormRequest 在方法为 POST 时发送 GET 请求
- javascript - Cordova 插件可压缩性问题
- ios - 我想设计一个屏幕,根据特定条件在同一屏幕上显示不同数量的视频
- vba - 如何缩放以适合在 powerpoint 中添加到图像占位符中的图片?
- python - 无法使用 gluSphere() 绘制到相同的位置?
- sql-server - 如何仅显示日期可用的女仆?SQL 服务器
- laravel - 关系已加载,但当我调用它时返回 null
- google-bigquery - 查询连接到 BiqQuery 中视图的 DataStudio 报表时的计费
- javascript - ReactJS 渲染附加范围 fromstring