在反向代理后运行 Airflow¶
Airflow 可以在反向代理之后设置,并且可以灵活地设置其端点。
例如,您可以配置反向代理以获取
https://lab.mycompany.com/myorg/airflow/
为此,您需要在 airflow.cfg
中设置以下设置
base_url = http://my_host/myorg/airflow
此外,如果您使用 Celery 执行器,并且启用 flower,则可以通过以下方式在 /myorg/flower
中获取 Flower
flower_url_prefix = /myorg/flower
您的反向代理(例如:nginx)应配置如下
将 url 和 http 标头原样传递给 Airflow Web 服务器,无需任何重写,例如
server { listen 80; server_name lab.mycompany.com; location /myorg/airflow/ { proxy_pass https://127.0.0.1:8080; proxy_set_header Host $http_host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location /myorg/flower/ { proxy_pass https://127.0.0.1:5555; proxy_set_header Host $http_host; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
为确保 Airflow 在 TLS 终止代理之后运行时生成具有正确方案的 URL,您应该配置代理以设置 X-Forwarded-Proto
标头,并在 airflow.cfg
中启用 ProxyFix
中间件
[webserver]
enable_proxy_fix = True
如果您需要为 ProxyFix
中间件配置单独的参数,则可以在 airflow.cfg
中单独设置它们
[webserver]
proxy_fix_x_for = 1
proxy_fix_x_host = 3
注意
仅当在受信任的代理(AWS ELB,nginx 等)后运行 Airflow 时,才应启用 ProxyFix
中间件。