我正在寻找使用花( https://github.com/mher/flower )来监控我的芹菜任务,而不是在他们的文档( http://docs.celeryproject.org/en/latest中build议的django-admin /userguide/monitoring.html#flower-real-time-celery-web-monitor )。 但是,因为我是新手,所以对于Flower的页面只基于HTTP,而不是HTTPS,我有点困惑。 我如何启用我的芹菜任务的安全性,使任何老用户不能只访问不需要login的网站http://flowerserver.com:5555和改变的东西?
我已经考虑了芹菜自己的文档 ,但不幸的是,没有提到如何保护花的API或networking用户界面。 它说: [Need more text here]
谢谢!
更新:我的问题是在这里的一部分重复: 如何将身份validation和端点添加到Django芹菜花卉监测?
但是,我在这里澄清了他的问题,询问如何使用包含nginx,gunicorn和celery的环境在同一台远程机器上运行它。 我也想知道如何设置Flower的外部可访问的url,但是如果可能的话,也会喜欢https而不是http(或者某种保护webui并远程访问它的方法)。 我还需要知道,如果离开Flower,对于任何可能访问Flower的内部API的人来说都是一个相当大的安全风险,并且保证这个的最佳方式是什么,或者只是完全禁用,需要的基础。
您可以使用–auth标志来运行花卉,该标志将使用特定的Google电子邮件进行验证:
celery flower --auth=your.email@gmail.com
编辑1 :
花的新版本需要更多的标志和注册的OAuth2客户端与谷歌开发者控制台 :
celery flower --auth=your.email@gmail.com --oauth2_key="client_id" --oauth2_secret="client_secret" --oauth2_redirect_uri="http://example.com:5555/login"
oauth2_redirect_uri
必须是实际的花登录网址,并且还必须添加到Google Development Console中的授权重定向网址。
不幸的是,这个功能在当前稳定版本0.7.2
中无法正常工作,但是现在已经在开发版本0.8.0-dev
修复了。
编辑2 :
您可以使用基本身份验证配置Flower:
celery flower --basic_auth=user1:password1,user2:password2
然后阻止所有5555端口,但本地主机和配置反向代理为Nginx或为Apache:
ProxyRequests off ProxyPreserveHost On ProxyPass / http://localhost:5555
然后确保代理mod是开启的:
sudo a2enmod proxy sudo a2enmod proxy_http
如果你不能在一个单独的子域上设置,例如: flower.example.com
(config上面),你可以为example.com/flower
设置它:
用url_prefix
运行花:
celery flower --url_prefix=flower --basic_auth=user1:password1,user2:password2
在Apache配置:
ProxyPass /flower http://localhost:5555
当然,确保SSL已配置,否则没有意义:)
我想在我的web服务器的子目录中的花,所以我的nginx反向代理配置看起来像这样:
location /flower/ { proxy_pass http://localhost:5555/; proxy_redirect off; 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-Protocol $scheme; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; }
现在我可以通过www.example.com/flower开花(密码保护)
这大部分来自Flower文档页面,关于配置一个nginx反向代理:
是的,没有认证的花,因为它只是与经纪人交谈,但如果你通过SSL运行,那么基本认证应该足够好。
HTTP和HTTPS如何影响Celery的安全性? 你指的是什么用户登录?
花监视器连接到工人的芹菜队列。 设置Flower时,需要提供连接字符串[broker]:// [user_name]:[password] @ [database_address]:[port] / [instance]。 用户名和密码是登录到您选择的数据库的凭证。
如果你指的是这个登录,不会简单地禁用/删除他们的登录就够了吗?