研究PHP/Gearman。我正在尝试理解Gearman服务器/进程如何确定什么构成“有效”客户端。
在我看到的文档中,文档显示了许多连接到Gearman服务器的客户端。但是,我还没有找到任何描述服务器如何“验证”工作人员,或限制工作人员/客户端访问/从服务器获取工作的内容。
例如,我创建了一个Gearman Server,并且我有一个包含5个子计算机的网络,每个子计算机都有一个"worker“。我的邪恶朋友Steve向网络中添加了另一台机器,它有自己的工人..
如何阻止Steve的工作人员从我的服务器上获取工作!
有没有办法让客户端/工作者自己注册,这样我基本上就可以给客户端/工作者分配ID了?
我相当确定有一种方法可以做到这一点,但我还没有遇到过。
我使用PHP/MySQL/Gearman在Linux环境下进行测试。
谢谢
发布于 2012-06-27 22:57:05
与memcached一样,gearman没有任何的访问控制或身份验证。
你最好的解决方案是依靠你的操作系统,例如防火墙规则。
也就是说,iptables应该阻止所有进入端口4730 (标准gearman端口)的流量,如下所示
iptables -A INPUT -p tcp --dport 4730 -s server1 -j ACCEPT
..。
iptables -A INPUT -p tcp --dport 4730 -s server5 -j ACCEPT
iptables -A INPUT -p tcp --dport 4730 -j DROP
这样,您仍然可以从localhost使用Gearman。
免责声明:此规则在我的头上,请仔细检查这些规则,然后在生产服务器上运行它。
希望这能有所帮助!
发布于 2012-06-27 23:00:20
通过侦听(1)仅在本地主机上或(2)在需要外部访问时设置适当的防火墙规则。创建Gearman的目的是尽可能减少开销,没有身份验证协议。如果这还不够,可以只监听localhost &使用SSH隧道连接到该机器。还有一种可能是使用HTTP协议(请参阅here),并在其前面放置一个验证代理。
发布于 2016-06-11 05:12:57
Gearman服务器只能在您的内部网络上访问。您的应用程序所在的网络不应包含未经授权的设备。您的应用服务器不应该与您的无线路由器共享网络。Gearman将只向注册到具有相同任务名称的特定服务器的服务器发送作业。如果您公司的一名员工将同名任务注册到您的生产Gearman主管作为一个笑话,您有更大的问题。
https://stackoverflow.com/questions/11228888
复制相似问题