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

Docker部署Nginx反向代理Airflow/Flower失效问题求助

问题解决:Nginx反向代理Airflow路径失效问题

问题场景

通过Docker搭建的架构:

  • Nginx -> index.html(访问地址:localhost:8080)
  • Nginx -> Airflow(访问地址:localhost:8080/airflow/)
  • Nginx -> Flower(访问地址:localhost:8080/flower/)

当前localhost:8080可正常显示静态页面,但访问localhost:8080/airflow/时失败,Nginx日志报错:

nginx-for-airflow_1 | 2022/08/04 09:09:42 [error] 30#30: *5 "/usr/share/nginx/html/airflow/index.html" is not found

核心原因

日志显示Nginx尝试在本地静态文件目录查找/airflow/index.html,说明/airflow/的反向代理规则未生效,请求走了默认静态文件路由;同时Airflow的外部访问路径配置不匹配,导致转发逻辑异常。

修复步骤

1. 修正Nginx配置

关键调整点:

  • 给/airflow/的proxy_pass末尾添加斜杠,确保请求转发到Airflow的根路径
  • 显式配置根路径/的静态文件处理规则,避免默认路由冲突
  • 补充必要的反向代理头部,确保Airflow能正确识别请求来源

修改后的nginx.conf:

upstream airflow_webserver {
    server airflow-webserver:8080;
}

upstream airflow_flower {
    server flower:5555;
}

server {
    # 指定Nginx静态文件根目录,对应默认index.html位置
    root /usr/share/nginx/html;

    listen 80;
    server_name localhost;
    charset utf-8;

    # 根路径处理静态文件请求
    location / {
        try_files $uri $uri/ =404;
    }

    location /airflow/ {
        proxy_pass              http://airflow_webserver/;  # 末尾必须加斜杠
        proxy_redirect          off;
        proxy_http_version      1.1;
        proxy_set_header        Upgrade $http_upgrade;
        proxy_set_header        Connection "upgrade";
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-Forwarded-Port $server_port;
    }

    location /flower/ {
        proxy_pass              http://airflow_flower/;
        proxy_redirect          off;
        proxy_http_version      1.1;
        proxy_set_header        Upgrade $http_upgrade;
        proxy_set_header        Connection "upgrade";
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
    }
}

2. 调整Airflow外部访问路径

修改airflow.cfg,让Airflow知道自己的外部访问前缀:

base_url = http://localhost:8080/airflow
web_server_port = 8080
enable_proxy_fix = True
proxy_fix_x_port = 3

3. 重启服务

执行命令重启相关容器:

docker-compose restart nginx-for-airflow airflow-webserver

验证

  • 访问http://localhost:8080:正常显示Nginx静态页面
  • 访问http://localhost:8080/airflow/:正常进入Airflow控制台
  • 访问http://localhost:8080/flower/:正常进入Flower监控页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:27:25