将共享或专用服务功能卸载到网关代理。 此模式可以通过将共享服务功能(如 SSL 证书的使用)从应用程序的其他部分移动到网关,简化应用程序开发。
一些功能通常跨多个服务使用,并且这些功能需要配置、管理和维护。 与每个应用程序部署一起分发的共享或特殊化服务会增加管理开支和部署错误的可能性。 对共享功能的任何更新必须跨共享该功能的所有服务部署。
正确处理安全问题(令牌验证、加密、SSL 证书管理)和其他复杂任务可能需要具备高度专业技能的团队成员。 例如,应用程序所需的证书必须在所有应用程序实例上配置和部署。 对于每个新部署,必须管理证书以确保它未过期。 任何即将到期的通用证书必须针对每个应用程序部署进行更新、测试和验证。
其他通用服务(如身份验证、授权、日志记录、监视或限制)可能很难在大量部署中进行实施和管理。 可能更好的做法是合并此类型功能,以便减少开销和降低错误概率。
将一些功能卸载到 API 网关,尤其是横切关注点(如证书管理、身份验证、SSL 终端、监视、协议转换或限制)。
下图显示终止入站 SSL 连接的 API 网关。 它代表 API 网关上游的 HTTP 服务器中的原始请求程序请求数据。
此模式的优点包括:
在以下情况下使用此模式:
如果此模式跨服务引入耦合度,则它可能不适合。
将 Nginx 用作 SSL 卸载设备,以下配置将终止入站 SSL 连接,并将连接分布到三个上游 HTTP 服务器之一。
upstream iis {
server 10.3.0.10 max_fails=3 fail_timeout=15s;
server 10.3.0.20 max_fails=3 fail_timeout=15s;
server 10.3.0.30 max_fails=3 fail_timeout=15s;
}
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/domain.cer;
ssl_certificate_key /etc/nginx/ssl/domain.key;
location / {
set $targ iis;
proxy_pass http://$targ;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
}
}