You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:AWS VPC内K8s部署Airflow后Ingress反向代理配置问题

解决Airflow在Ingress子路径下静态资源404的问题

这是Airflow部署在反向代理子路径下的典型问题——Airflow默认不知道自己运行在/airflow前缀下,所以生成的静态资源URL都是根路径,导致Ingress找不到这些资源。结合你的Helm部署和Nginx Ingress环境,咱们可以通过配置Airflow识别子路径+调整Ingress传递正确的代理头部来解决:

1. 更新Airflow的Helm配置,让它知道子路径

因为你用的是Helm stable/airflow 7.1.1,需要在values文件里添加Airflow的反向代理和子路径相关配置,让Airflow生成带/airflow前缀的静态资源URL:

airflow:
  webserver:
    # 设置Airflow web界面的基础路径为/airflow
    baseUrl: /airflow
    extraEnv:
      # 开启代理修复,信任反向代理的头部信息
      - name: AIRFLOW__WEBSERVER__ENABLE_PROXY_FIX
        value: "true"
      # 让Airflow读取X-Forwarded-Prefix头部来生成正确的路径
      - name: AIRFLOW__WEBSERVER__PROXY_FIX_X_FORDED_PREFIX
        value: "true"

应用这个配置更新Airflow:

helm upgrade airflow-dev stable/airflow -n dev -f your-custom-values.yaml

2. 调整Ingress配置,传递前缀头部并修正规则

你的现有Ingress已经有rewrite规则,但缺少传递X-Forwarded-Prefix的配置,这是Airflow识别子路径的关键。修改后的Ingress配置如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/connection-proxy-header: upgrade
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    # 添加配置片段,传递X-Forwarded-Prefix头部给Airflow
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-Prefix /airflow;
    # 确保正则路径规则生效
    nginx.ingress.kubernetes.io/use-regex: "true"
  labels:
    app.kubernetes.io/instance: airflow-dev-web
    app.kubernetes.io/managed-by: Tiller
    app.kubernetes.io/name: airflow-dev-web
    app.kubernetes.io/version: "1.0"
    helm.sh/chart: web-service-0.1.0
  name: airflow
  namespace: dev
spec:
  rules:
  - host: public.host.com
    http:
      paths:
      - backend:
          serviceName: airflow-dev-web
          servicePort: 8080
        path: /airflow(/|$)(.*)

应用Ingress更新:

kubectl apply -f your-ingress.yaml -n dev

3. 验证效果

等待Airflow webserver重启完成后,访问https://public.host.com/airflow/admin,打开浏览器开发者工具查看静态资源的请求URL,应该都变成了https://public.host.com/airflow/admin/...这样带前缀的路径,不会再返回404了。

原理说明:

  • Airflow的ENABLE_PROXY_FIX和PROXY_FIX_X_FORDED_PREFIX配置让它信任Nginx传递的X-Forwarded-Prefix头部,从而在生成静态资源URL时自动加上/airflow前缀。
  • Ingress的configuration-snippet负责把这个前缀头部传递给Airflow容器,确保双方信息一致。

内容的提问来源于stack exchange,提问作者Cunuu Kum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:42:37