Nginx 两个反向代理后面的气流-graph GET请求不包含任何DAG ID

Nginx 两个反向代理后面的气流-graph GET请求不包含任何DAG ID,nginx,airflow,nginx-reverse-proxy,nginx-config,Nginx,Airflow,Nginx Reverse Proxy,Nginx Config,我的设置: 我在两个nginx代理后运行气流1.10.9。第一代理将请求转发到位于专用网络内的第二代理。第二个代理将请求转发到请求的Airflow实例,其中Airflow主机在URL中指定。这本质上允许我们运行多个气流实例并正确地路由到它们 我还将Airflow base_url更新为http://myhost/airflow-/在这里,URL的id部分是第二个代理如何识别转发到哪台机器的 代理设置正在运行,因为气流UI可以访问,并且我可以看到我的DAG加载到UI中。但是,当我尝试与DAG交互时

我的设置:

我在两个nginx代理后运行气流1.10.9。第一代理将请求转发到位于专用网络内的第二代理。第二个代理将请求转发到请求的Airflow实例,其中Airflow主机在URL中指定。这本质上允许我们运行多个气流实例并正确地路由到它们

我还将Airflow base_url更新为
http://myhost/airflow-/
在这里,URL的id部分是第二个代理如何识别转发到哪台机器的

代理设置正在运行,因为气流UI可以访问,并且我可以看到我的DAG加载到UI中。但是,当我尝试与DAG交互时,会出现以下错误:

DAG“无”似乎丢失。

我一直跟踪问题,直到到达Airflow UI的GET请求。我可以看到该请求不包含任何DAG ID。在我的工作气流实例(不在任何代理后面运行的实例)上,该请求包含DAG ID
run_etl

“GET/graph?dag_id=run_etl&root=&execution_date=2020-02-10T11%3A42%3A14.454118%2B00%3A00 HTTP/1.1”200 10174http://10.83.163.248:3128/graph?dag_id=run_etl“Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/78.0.3904.87 Safari/537.36”

在专用网络中运行的Airflow实例上,GET请求不包含DAG ID:

GET/admin/airflow/graph HTTP/1.1“302 221”https:///admin/“Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/78.0.3904.87 Safari/537.36”

我的nginx配置如下:

代理1:

server {
    listen 443 ssl;
    server_name  <redacted server name>;

    location ~ /airflow-(.*) {
        proxy_pass http://172.23.7.79:80;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
服务器{
听443ssl;
服务器名称;
位置~/气流-(*){
代理通行证http://172.23.7.79:80;
代理_重定向关闭;
proxy_http_版本1.1;
代理设置头主机$Host;
代理设置头升级$http\U升级;
代理设置头连接“升级”;
}
}
代理2:

server {
    listen     80;

    location ~ /airflow-([^\/]+)/(.*) {
        proxy_pass http://$1-<redacted hostname>:8080/airflow-$1/$2;
        proxy_redirect  off;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
服务器{
听80;
位置~/气流-([^\/]+)/(.*)){
代理传递http://$1-:8080/气流-$1/$2;
代理_重定向关闭;
代理设置头主机$Host;
proxy_http_版本1.1;
代理设置头升级$http\U升级;
代理设置头连接“升级”;
}
}


如果您对这里的问题有任何想法,我们将不胜感激

答案比我预期的更直截了当

为了在代理传递中传递URL查询,代理2需要一些额外的配置

proxy\u pass http://$1-:8080/气流-$1/$2$is\u args$args

参考: