Airflow 2025 峰会将于 10 月 07 日至 09 日举行。立即注册可享早鸟票!

在反向代理后运行 Airflow

Airflow 可以设置在反向代理后运行,并且能够非常灵活地设置其端点。

例如,您可以配置您的反向代理以实现

https://lab.mycompany.com/myorg/airflow/

为此,您需要在您的 airflow.cfg 中设置以下内容

base_url = http://my_host/myorg/airflow
  • 配置您的反向代理(例如 nginx)以将 url 和 http 头原样传递给 Airflow webserver,不进行任何重写,例如

    server {
      listen 80;
      server_name lab.mycompany.com;
    
      location /myorg/airflow/ {
          proxy_pass http://localhost:8080;
          proxy_set_header Host $http_host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_redirect off;
          proxy_http_version 1.1;
      }
    }
    
  • 使用 --proxy-headers CLI 标志告诉 Uvicorn 遵守这些头:airflow api-server --proxy-headers

  • 如果您的代理服务器与 Airflow 不在同一主机(或同一 docker 容器)上,那么您将需要设置 FORWARDED_ALLOW_IPS 环境变量,以便 Uvicorn 知道信任来自谁的此头。请参阅 Uvicorn 文档。了解此处可以传递的完整选项。(请注意,Airflow 中不存在 --forwarded-allow-ips CLI 选项。)

这篇条目有帮助吗?