[英]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 1
和app 2
在應用程序內部只是2條不同的執行路徑。
在本地計算機(在本例中為EC2實例)上,通過更改/etc/hosts
文件,可以使localhost
和myapp.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.