在反向代理後方執行 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 webserver,無需任何重寫,例如

    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 終止代理後方執行時產生具有正確 scheme 的 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 中介軟體。

這篇文章是否對您有幫助?