1

我正在使用未註冊域名的默認EC2實例。我正在嘗試使用子域在MEAN堆棧應用中測試一些多租戶功能。Nginx中的默認EC2實例中的通配符子域

基本上我可以通過瀏覽器使用默認的AWS公共DNS前端訪問網站。

http://ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com 

這一切都很好,它工作正常。

問題是我想啓用訪問該域的子域的能力。因此,例如我想能夠打:

http://client1.ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com 
http://client2.ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com 
etc. 

我想不出如何使用nginx做到這一點。這是我目前nginx的默認文件:

server { 
     listen 80; 

     server_name *.ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com; 

     location/{ 
       proxy_pass http://127.0.0.1:8080/; 
       proxy_http_version 1.1; 
       proxy_set_header Upgrade $http_upgrade; 
       proxy_set_header Connection 'upgrade'; 
       proxy_set_header Host $host; 
       proxy_cache_bypass $http_upgrade; 
     } 
} 

然而,當我瀏覽到任何的子域我得到一個錯誤說網頁無法使用。

如果我沒有子域訪問它,頁面加載就好了。

關於如何讓這個工作的任何想法?

感謝任何幫助!

編輯:你會發現,我創建了一個代理通,因爲我永遠使用端口上我的節點服務器運行8080

回答

0

據我所知,亞馬遜沒有爲他們創造EC2域通配符記錄, 所以 *。地址甚至不會解決(你可以很容易地測試這個)。您需要註冊一個域並將其作爲CNAME通配到您的EC2實例。

+0

哦不!我以前很怕那個。無論如何,無需註冊域名? – harbinja

+0

結束做子域的子域名:* .dev.mydomain.com – harbinja

0

你不能用默認的amazonaws主機名來做到這一點,但有另一種方法。

請參閱http://xip.io

any.subdomain.you-like.x.x.x.x.xip.io將自動解析爲IP地址x.x.x.x,因此如果用主機名替換EC2實例的IP地址,則您在此處有所需。

爲了清楚起見,我不隸屬於此服務。