【问题标题】:Airflow + Nginx set up gives Airflow 404 = lots of circlesAirflow + Nginx 设置给出了 Airflow 404 = 很多圈子
【发布时间】:2019-09-30 00:23:29
【问题描述】:

我正在尝试使用此处给出的说明在 nginx 后面设置 Airflow。

airflow.cfg 文件

base_url = https://myorg.com/airflow
web_server_port = 8081
.
.
.
enable_proxy_fix = True

nginx 配置

server {
    listen 443 ssl http2 default_server;
    server_name myorg.com;
    .
    .
    .
    location /airflow {
        proxy_pass http://localhost:8081;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-Proto "https";
    }
}

Airflow 网络服务器和调度程序已启动并作为 systemd 运行。当我尝试访问 https://myorg.com/airflow/ 时,它给出了 Airflow 404 = 很多圈子。

可能出了什么问题?非常感谢您帮助运行此程序。

【问题讨论】:

    标签: nginx reverse-proxy airflow


    【解决方案1】:

    我刚刚遇到了同样的问题,并通过在该位置添加了一个拖尾 / 来解决它:location /airflow/ { 而不是 location /airflow {。尾部反斜杠告诉 nginx 删除相应 python 应用程序的 uri 路径中前面的 /airflow。

    我的整体配置如下:

        server_name my_server.my_org.net;
        location /airflow/ {
            proxy_pass http://localhost:9997;
            proxy_set_header Host $host;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }             
    

    airflow.cfg我另外指定:

    base_url = http://my_server.my_org.net/airflow
    enable_proxy_fix = False  # Seems to be deprecated?
    web_server_port = 9997
    

    【讨论】:

    • enable_proxy_fix 没有被弃用,但只有在 SSL 代理后面运行时才需要它(ProxyFix 确保生成的 URL 等添加了正确的方案)。
    【解决方案2】:

    我在使用 https 时遇到了同样的问题。
    但是在解决方案中使用配置导致我遇到另一个问题。

    /airflow/ 位置以外的任何内容都回退到 / 位置。 将 404 错误返回到资产。

    使用下面的配置解决了这个问题:

    location ^~ /airflow/ {
      proxy_pass_header Authorization;
      proxy_pass http://localhost:8080/airflow/;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $host:$server_port;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_http_version 1.1;
      proxy_redirect off;
      proxy_set_header Connection "";
      proxy_buffering off;
      client_max_body_size 0;
      proxy_read_timeout 36000s;
    } 
    

    【讨论】:

    • X-Forwarded-Server 标头对 Airflow 和 ProxyFix 来说毫无意义,您可以放心地删除它。 X-Forwarded-Host 将被忽略,除非您在 webserver 部分设置了 proxy_fix_x_host = 1,并且也不需要,因为您已经为代理请求设置了 Host 标头。
    • ^~ 修饰符仅在您的服务器有正则表达式位置规则时才需要,否则会匹配。否则 location /airflow/ 就足够了。
    • 是的!我有一条通通 PHP 的规则。
    猜你喜欢
    • 1970-01-01
    • 2021-12-17
    • 2018-11-07
    • 2022-11-21
    • 2021-05-28
    • 2021-02-28
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多