在反向代理后运行 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 中间件。

此条目是否有帮助?