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