AWS有個(gè)服務(wù),叫Route53,可以注冊(cè)和管理域名。對(duì)我而言最方便的地方是它的alias??梢灾苯舆B到同一賬戶內(nèi)的其他服務(wù)比如S3 和 LoadBalancer。
如果用傳統(tǒng)的server模式,可以連到loadbalancer,享用AWS免費(fèi)的SSL服務(wù)。在LB那邊就把443轉(zhuǎn)向server的80,不需要在自己的EC2上處理SSL問(wèn)題。LB還可以把AccessLog放到S3上,集中處理起來(lái)也比較方便。后面哪個(gè)機(jī)器掛了,直接換,LB這邊換個(gè)重定向就好。
如果使用server less模式,可以直接定向到S3。如果是lambda的APIgateway,可以使用CNAME或是在S3那邊再做跳轉(zhuǎn)。
對(duì)于多個(gè)AWS賬戶下,服務(wù)器和域名不在同一個(gè)賬戶的問(wèn)題,可以選擇1. 轉(zhuǎn)移域名到同一個(gè)賬戶下; 2. 在web服務(wù)器和LB所在賬戶下建立新的hosted zone,把域名的name servers 指向該hostzed zone; 3. 在一個(gè)hosted zone 內(nèi)創(chuàng)建指向另一個(gè)AWS賬戶的alias。
域名轉(zhuǎn)移到同一賬戶下, 官方文檔的說(shuō)法是http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-transfer-between-aws-accounts.html。但是還可以使用別的方法(AWS之外的老方法)。首先打開(kāi)Transfer lock,把該域名的轉(zhuǎn)移保護(hù)取消,然后生成授權(quán)碼 Authorization code。在轉(zhuǎn)入方可是使用該授權(quán)碼要求轉(zhuǎn)入。但是!注冊(cè)不滿60天的域名無(wú)法轉(zhuǎn)讓
在服務(wù)器的那個(gè)AWS賬戶下創(chuàng)建Route53 hosted zone. 把注冊(cè)域名那邊的name servers (NS) 換到新創(chuàng)建的hosted zone里的 name servers. Start of Authority (SOA) 那邊怎么改還不知道?
Route53 的 DNS record (A CNAME)使用alias指向其他的AWS account 資源。
AWS還要一項(xiàng)免費(fèi)的SSL
DNS 背景知識(shí)
DNS注冊(cè) AWS可以直接注冊(cè),12塊美金一個(gè)頂級(jí)域名。注冊(cè)了之后,在Route53頁(yè)左側(cè)導(dǎo)航欄的Domains下,有一個(gè)Registered domains 可以看到可管理域名。這里面需要注意的是Name Servers。我們希望使用AWS的hosted zone 來(lái)管理各種DNS記錄。所以這里的name servers 需要使用對(duì)應(yīng)的記錄。
SSL Cert:
- Subject Alternative Name – Multi-Domain (SAN), 一個(gè)證書cover多個(gè)域名,甚至可以是不同root的,比如abc.com, def.com都可以放在同一個(gè)證書里。
- wildcard Cert, *.example.com. 但是不知道這個(gè)能不能管example.com
hosted zone 是一個(gè)管理各種DNS記錄的工具, 比如A, CNAME, SOA。
ACM Amazon Certificate Manager 是一個(gè)管理SSL/TLS證書的工具。使用它可以導(dǎo)入外部證書,也可以生成AWS自己的SSL 證書。但是這個(gè)證書只能給AWS的load balancer 使用。外面的SSL證書一個(gè)每年好幾十上百塊美金,但是這個(gè)AWS內(nèi)部的居然是免費(fèi)生成。唯一的條件是要使用AWS 的load balancer,對(duì)于我這種身家性命所有東西都放在AWS上的方案來(lái)講,是最好不過(guò)的。
在生成證書時(shí),可以選擇發(fā)給一個(gè)或多個(gè)域名的證書。一般情況下,會(huì)生成兩個(gè)域名的證書。example.com 和 www.example.com,當(dāng)然如果嫌麻煩,可以把www的換成*.example.com,wildcard 類型
在生成證書時(shí),系統(tǒng)會(huì)發(fā)送確認(rèn)郵件給下面的email地址。