簡體   English   中英

AWS ec2通過不帶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公開訪問它ec2 Public DNS (IPv4) - ec2-x-xxx-xxx-xxx.compute-1.amazonaws.com:8000

但是此應用程序具有根據域URL觸發兩個不同的Web應用程序的功能。

localhost:8000 -> app 1

myapp.localhost:8000 -> app 2

由於域名無法解析,我無法將字符串myapp添加到我的ec2 Public DNS地址中,並且無法加載該應用。

我不想走53號公路。

可以用其他方法完成嗎? 也許通過將主機名添加到ec2主機配置文件中?

如果是這樣,請指出正確的方向。 謝謝。

從描述中,我可以看到您有一個應用程序可以檢查HTTP請求中發送的DNS名稱,以區分一個應用程序中的兩種不同的業務邏輯。 從技術上講,只有一個應用程序,因為您只有一個正在運行的進程偵聽端口8000。 app 1app 2在應用程序內部只是2條不同的執行路徑。

在本地計算機(在本例中為EC2實例)上,通過更改/etc/hosts文件,可以使localhostmyapp.localhost指向127.0.0.1 ,這是默認回送網絡接口上的IP。 這樣,您可以使用這兩個本地解析的域名在本地訪問應用程序。 它們將被解析為相同的IP,並以您計算機上的相同運行進程為目標。

如您所見,它是如何在計算機上本地運行的,為了實現您的目標,您將需要2個指向相同IP的DNS記錄。 由於您無法使用Route 53或其他類似服務來創建更多公共DNS記錄以映射到EC2實例的公共IP,因此無法為您的計算機使用第二個DNS名稱。

讓您的應用程序的業務邏輯依賴於您無法實際控制的DNS名稱實際上有點奇怪。 我建議您使用HTTP標頭或查詢參數來解決您的問題。

使用自定義HTTP標頭的一種解決方案可以像這樣完成:

(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標頭值,然后繼續執行不同的執行路徑(如您所說的不同應用程序)。 因此,您只需要一個DNS名稱即可支持2個應用程序。

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM