AWS ec2 通过不同的 hostname/domain 名称访问本地应用程序而不使用 Route 53

AWS ec2 access local app via different hostname/domain name without Route 53

我在我的 ec2 本地有一个 Web 应用程序 运行。我可以通过 ec2 Public DNS (IPv4) - ec2-x-xxx-xxx-xxx.compute-1.amazonaws.com:8000

公开访问它

但此应用程序具有根据域触发两个不同网络应用程序的功能 url。

localhost:8000 -> app 1

myapp.localhost:8000 -> app 2

由于域名未解析,我无法将字符串 myapp 添加到我的 ec2 Public DNS 地址并使应用程序加载。

我不想走 53 号公路。

这可以通过其他方式完成吗?也许通过将主机名添加到 ec2 主机配置文件?

如果是这样,请指出正确的方向。谢谢。

从描述中,我可以看到您有一个应用程序检查 HTTP 请求中发送的 DNS 名称,以区分一个应用程序中的 2 个不同的业务逻辑。从技术上讲,只有一个应用程序,因为您只有一个侦听端口 8000 的进程 运行。app 1app 2 只是应用程序内部的 2 个不同的执行路径。

在您的本地计算机(在本例中为 EC2 实例)上,通过更改 /etc/hosts 文件,您可以将 localhostmyapp.localhost 都指向 127.0.0.1,这是您默认环回网络接口上的 IP。这样,您就可以使用这 2 个本地解析的域名在本地访问该应用程序。它们将被解析为相同的 IP 并针对您计算机上相同的 运行 进程。

如您所见,它是如何在您的机器上本地运行的,为了实现您的目标,您需要 2 个指向同一 IP 的 DNS 记录。由于您不能使用 Route 53 或其他类似服务来创建更多 public DNS 记录以映射到您的 EC2 实例的 public IP,因此您无法为您的机器设置第二个 DNS 名称。

让您的应用程序的业务逻辑依赖于您无法实际控制的 DNS 名称实际上有点奇怪。我建议您使用 HTTP headers 或查询参数来解决您的问题。

使用自定义 HTTP header 的一个解决方案可以像这样完成:

(For App1)
HTTP GET ec2-x-xxx-xxx-xxx.compute-1.amazonaws.com:8000
Header: X-APP-NAM=app1

(For App2)
HTTP GET ec2-x-xxx-xxx-xxx.compute-1.amazonaws.com:8000
Header: X-APP-NAME=app2

在您的应用程序中,在您检查 DNS 名称的地方,您可以更改逻辑以检查 X-APP-NAME HTTP header 值,然后继续执行不同的执行路径(不同的应用程序如你说)。因此,您只需要一个 DNS 名称即可支持 2 个应用程序。

希望对您有所帮助。