【发布时间】:2016-10-24 22:48:21
【问题描述】:
我们有一个 Java 应用程序服务于多种产品。它的行为会因产品而异。
产品由url的子域定义:
https://<product1>.example.com
https://<product2>.example.com
...
这些网址中的每一个都通过 Route 53 映射到不同的 AWS Elastic Load Balancer,后者将请求转发到我们的同类 EC2 应用程序服务器群。
所以https://<product1>.example.com 有一个 ELB,https://<product2>.example.com 有一个不同的 ELB。然而,这两个 ELBS 都将流量引导到具有相同 Java 应用程序的同一组服务器。
ELB根据是否为https,通过端口9443和9001转发请求,nginx对端口9001上的所有流量进行重定向,否则通过端口8080转发到Java应用程序。
我需要能够在原始 url 到达 Java 应用程序之前确定它是什么,以便可以使用它来确定响应的配置和行为。我想出的最好的是$http_referer,但这仅适用于初次访问后的任何请求,我们也需要第一次访问时的 url。
【问题讨论】:
-
它应该在
$host... 是你要找的吗?此外,通配符或 UCC(多 SAN)SSL 证书似乎会使所有这些额外的 ELB 变得多余。
标签: java tomcat nginx amazon-elb