68 lines
1.9 KiB
Plaintext
68 lines
1.9 KiB
Plaintext
# Apache Airflow - Workflow Orchestration
|
|
# Subpath: /airflow
|
|
# Backend: airflow-webserver:8080
|
|
|
|
location /airflow {
|
|
# Remove /airflow prefix before forwarding
|
|
rewrite ^/airflow(/.*)$ $1 break;
|
|
|
|
# Forward to Airflow Webserver
|
|
proxy_pass http://airflow-webserver:8080;
|
|
|
|
# Preserve headers
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
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;
|
|
|
|
# Important for Airflow subpath
|
|
proxy_set_header X-Script-Name /airflow;
|
|
|
|
# Session cookie handling
|
|
proxy_cookie_path / /airflow/;
|
|
|
|
# WebSocket support for real-time logs
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
|
|
# Timeouts (DAG runs can take time)
|
|
proxy_connect_timeout 300s;
|
|
proxy_send_timeout 300s;
|
|
proxy_read_timeout 300s;
|
|
|
|
# Buffer settings
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 4 256k;
|
|
proxy_busy_buffers_size 256k;
|
|
}
|
|
|
|
# API endpoints
|
|
location /airflow/api {
|
|
rewrite ^/airflow(/.*)$ $1 break;
|
|
proxy_pass http://airflow-webserver:8080;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_set_header X-Script-Name /airflow;
|
|
proxy_cookie_path / /airflow/;
|
|
}
|
|
|
|
# Static files
|
|
location /airflow/static {
|
|
rewrite ^/airflow(/.*)$ $1 break;
|
|
proxy_pass http://airflow-webserver:8080;
|
|
proxy_set_header Host $host;
|
|
proxy_cache_valid 200 1d;
|
|
add_header Cache-Control "public, immutable";
|
|
}
|
|
|
|
# Health check
|
|
location /airflow/health {
|
|
rewrite ^/airflow(/.*)$ $1 break;
|
|
proxy_pass http://airflow-webserver:8080;
|
|
proxy_set_header Host $host;
|
|
}
|