作者回复: 你好,通过nginx暴露内部服务以后,严格讲也不能算直接暴露在公网上。但是,一般不建议通过nginx直接暴露内部服务,因为很可能会有潜在安全性问题,比如某些内部API是涉及敏感安全数据的,不能随便暴露出去,当然可以让运维帮忙在nginx上配安全策略,但是nginx配置安全策略比较麻烦,对开发人员不友好不灵活,很容易犯错,留下潜在安全隐患。通过引入BFF层,可以在内部服务和外网之间引入一层间接,一方面可以增加聚合裁剪适配的逻辑,另外还可以增加安全性,防止内部敏感API被无意暴露出去的可能性,因为BFF是开发人员负责开发的,他们有更大灵活性和控制。
作者回复: BFF可以有缓存(甚至还可以有独立的DB),比方说如果某个BFF是一个聚合服务,它可以把聚合好的数据缓存起来(服务器本地缓存,或者集中的redis缓存),这样可以加快后面的查询速度。
作者回复: 对,你看得很仔细,nginx其实也可以实现反响路由的功能,一个域名,通过path或者header路由,也可以搞定。
作者回复: bff是聚合层,也有公司叫api层,主要作用是对后端基础服务进行聚合裁剪,对外暴露无线设备友好的api。bff可以用对后端友好的语言开发,也可以用对前端友好的语言如nodejs开发。