在反向代理后运行 Airflow

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

例如,您可以将反向代理配置为获取

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

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

base_url = http://my_host/myorg/airflow

此外,如果您使用 Celery Executor 并启用了 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";
      }
    }
    
  • 重写 Flower 端点的 url

    server {
        listen 80;
        server_name lab.mycompany.com;
    
        location /myorg/flower/ {
            rewrite ^/myorg/flower/(.*)$ /$1 break;  # remove prefix from http header
            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 中间件。

此条目有帮助吗?