我有许多独立的 Java Web 应用程序,它们当前在不同的端口和 URL 上运行。我想将所有这些应用程序公开在单个端口 (443) 后面,并将不同的公共 URL 映射到各个内部 URL/端口。我认为客户端使用 Nginx 作为反向代理。
我还需要这些应用程序只能通过 SSL 访问,并计划在 AWS VPC 中对所有内容进行计划,其中 SSL 在到达反向代理之前终止于 AWS ELB。
这似乎是一个非常标准的堆栈。有什么理由不这样做吗?有什么理由我应该在反向代理(Nginx 或其他)而不是 AWS ELB 上终止 SSL?
谢谢
答案1
在某些设置中,决定在何处终止 SSL 时需要考虑安全方面:
- 您想要将您的证书信任给哪个节点?
- 有多少通信会发生在 SSL 终止点后面而因此不受保护?
您还必须考虑技术方面的问题,看看什么是可能的,什么是不可能的:
- 不终止 SSL 的负载均衡器无法插入 X-Forwarded-For 标头。因此,除非您使用基于 DSR 的负载均衡,否则后端将不知道客户端 IP 地址。
- 除非客户端支持 SNI,否则未终止 SSL 的前端无法根据域名调度到不同的后端。