专用于管理权限/ACL 和(反向)代理 API 服务器的 Web 服务器解决方案?

专用于管理权限/ACL 和(反向)代理 API 服务器的 Web 服务器解决方案?

我正在考虑各种布局,通过专用于代表 API 服务管理权限的前端服务器来公开各种 HTTP API 服务(在它们自己不同的服务器上运行)。

我考虑过各种选项,从经典的 Nginx、Apache 等到 HAProxy,再到各种 Python Web 服务器解决方案,如 Tornado、Twisted(这让我有机会轻松实现自己的 ACL 系统)。基本功能是高性能和可扩展性,以及管理细粒度 ACL 规则的能力(类似于HAProxy ACL 系统

我想知道建议采用什么方法来设置我需要的内容,以及是否已经有专门用于此的现成解决方案(开源)。


(我是提出问题的用户)。感谢两位的回答。我刚刚发现了 mod_security 的功能。我要去读这本书。我不确定 WAF 是否是正确的工具,但我认为它是 ;)

我唯一担心的问题是当我应用规则更改时需要重新启动服务器。我希望这不是必需的。

HAProxy 似乎还不错,但我更喜欢跨平台的东西。我会尝试这两种解决方案。

答案1

你没有清楚地描述你的问题。haproxy 有什么问题?从你的陈述来看:

基本特征是高性能和可扩展性,以及管理细粒度 ACL 规则的能力。

我可以说,只要使用 haproxy 就没问题了。它是一款功能强大、灵活且开源的解决方案。你只需要确保它具有所有需要的功能。

答案2

我不太确定我是否理解了你的问题。你想根据各种因素过滤 HTTP 请求?

使用 Web 应用程序防火墙,在 apache 上使用 mod_security 进行过滤(mod_proxy 用于直通)。它非常强大且有效。示例:如果您正在使用 Web 服务/XML/SOAP/WSDL,那么您甚至可以将模板 XML 文件添加到 mod_security,它将根据该文件过滤请求内容。您可以将来自 mod_security 的请求转发到其他服务器、代理、阻止、拒绝、计数参数、值等

此外,您还可以使用像 squid 或 varnish 这样的反向代理,在 apache 上使用 mod_extract_forwarded 提取 REMOTE_ADDR 等等......

相关内容