nginx 反向代理后运行的花

khbbv19g  于 2023-03-22  发布在  Nginx
关注(0)|答案(3)|浏览(220)

下面是我的nginx配置:

location /flower/ {
    rewrite /flower/(.*) /$1  break;

    sub_filter '="/' '="/flower/';
    sub_filter_last_modified on;
    sub_filter_once off;

    proxy_pass http://localhost:5555/;
    proxy_set_header Host $host;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

location /flower/static/ {
    sub_filter '/api' '/flower/api';
    sub_filter "'/monitor" "'/flower/monitor";
    sub_filter "'/worker" "'/flower/worker";
    sub_filter "'/'" "'/flower/'";
    sub_filter "'/dashboard'" "'/flower/dashboard'";
    sub_filter '"/update-dashboard"' '"/flower/update-dashboard"';
    sub_filter_types application/javascript;  # by default, sub_filter won't touch JS
    sub_filter_last_modified on;
    sub_filter_once off;

    alias <VIRTUALENV_PATH>/python3.4/site-packages/flower/static/;
    expires 30d;
}

上面的链接:https://github.com/mher/flower/issues/414
我的花版本是0.9.2,nginx版本是1.12.1
我跑花如下:

$celery flower -A project_name --port=5555 --broker redis://broker_url:port

这将呈现以下内容:

我跑花如下:(used --url_prefix=flower)

$ celery flower -A project_name --port=5555 --broker redis://broker_url:port --url_prefix=flower

然后呈现所有静态文件,如下所示:

当我点击上面的任何一个选项卡(比如任务)时,就会出现问题,如下所示:

我注意到URL不是说:/flower/dashboard/ is /flower/flower/dashboard等等。
我在这里遗漏了什么?nginx配置中有什么需要更改的吗?

z4iuyo4d

z4iuyo4d1#

我不知道你为什么在nginx配置中使用sub_filter
在我看来,你是在一个特定的网址像xyz.com/flower这就是为什么你使用sub_filter托管花。
虽然我没有这样使用flower,但我觉得它是错误的,我还发现了另一个错误,即你把location /flower/static/放在location /flower/下面,因此所有的静态请求都将由location /flower/代码块处理。
你的nginx配置应该看起来像这样:

server {
    location /flower/static {
        alias  /the/path/to/flower/static;
    }
    location /flower {
        rewrite ^/flower/(.*)$ /$1 break;
        proxy_pass http://localhost:5555;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
    }
}

您可以阅读有关documentationexample上的设置的更多信息

mhd8tkvw

mhd8tkvw2#

通过将--url_prefix=flower更改为--url_prefix=/flower,它为我修复了。

e5nszbig

e5nszbig3#

如果花儿是这样跑的:

celery --broker=amqp://broker_url:port flower --port=5555 --url_prefix=/flower

那么nginx配置只需要:

location /flower/ {
        proxy_pass http://localhost:5555/flower/;
    }

我用的是flower 1.2.0

相关问题