如何通过uWSGI和Nginx部署Apache Airflow且无需修改Nginx配置
部署配置步骤
1. 替换airflow/wsgi.py内容
直接替换原有wsgi.py的代码为以下内容,实现调用Airflow的Flask应用同时适配SSL反向代理场景:
from airflow.www.app import create_app from werkzeug.middleware.proxy_fix import ProxyFix # 初始化Airflow Web服务应用 application = create_app() # 修复反向代理请求头,适配SSL卸载场景 # 参数说明:x_proto=1表示信任代理传递的X-Forwarded-Proto头,识别HTTPS请求 application.wsgi_app = ProxyFix( application.wsgi_app, x_for=1, x_proto=1, x_host=1, x_port=1 )
注意:需确保虚拟环境中已安装对应版本的Airflow及依赖,否则导入会报错。
2. 修改airflow/airflow.cfg配置
调整以下核心参数适配反向代理场景:
base_url:填写对外暴露的完整访问地址,示例:https://your-domain.com(如果是子路径部署则填写https://your-domain.com/airflow)enable_proxy_fix:设置为True,开启Airflow自带的代理适配能力cookie_secure:设置为True,保证Cookie仅在HTTPS下传输,适配SSL场景web_server_ssl_enabled:设置为False,SSL卸载由前端Nginx处理,uWSGI侧无需处理SSL- 如果是子路径部署,额外新增/修改
web_server_root_path参数为你的子路径,示例:/airflow
3. uwsgi.ini配置优化(可选)
原有配置可正常运行,建议新增以下参数避免大请求被截断:
buffer-size = 32768
前提是前端Nginx已经配置了将对应域名/路径的请求转发到你uWSGI监听的127.0.0.1:9999端口,无需修改Nginx的Airflow专属配置,只要基础转发规则正确即可。
Worker与Scheduler适配说明
上述所有配置仅适用于Airflow Webserver组件,Worker和Scheduler是独立运行的服务进程,不需要通过uWSGI部署,和通用生产环境启动逻辑一致:
- Worker:根据你使用的Executor类型执行对应启动命令即可,比如CeleryExecutor使用
airflow celery worker - Scheduler:直接执行
airflow scheduler命令启动 - 两类进程仅需要保证
airflow.cfg中的公共配置(如元数据库连接、Executor类型、消息队列配置等)和Webserver侧一致即可,无需修改WSGI、uWSGI相关配置
内容的提问来源于stack exchange,提问作者Mark Hallbauer
相关产品推荐
相关产品推荐

