我在这里托管了一个网站:http://testapp-test.us-west-2.elasticbeanstalk.com/someservlet.do
该网站包含index.jsp
和someservlet
。
在https://my.freenom.com内阁中,我试过:设置名称服务器并将网址转发设置为http://testapp-test.us-west-2.elasticbeanstalk.com。
前者不起作用:我在屏幕显示时设置了名称服务器,在尝试访问codingrecords.tk时,它只是空白。
然而,URL转发有效,并且确实显示主页面,但当我尝试访问http://codingrecords.tk/someservlet.do时,它仍会显示index.jsp
消息。
我该如何解决?通过指定名称服务器,而不是URL转发?但那时它也不起作用..
答案 0 :(得分:4)
好的,所以经过大量的谷歌搜索和尝试,我设法让它工作。我希望它能帮助未来的读者。
我在Internet上的自定义域中部署我的Java应用程序所做的工作:
创建密钥对(不知道是否必要,以防万一):
2.1。转到亚马逊网络服务 - 服务 - EC2 - 密钥对 - 创建密钥对
2.2为密钥选择一些key_name,在计算机上保存文件
在AWS上创建应用程序和环境
3.1转到 Amazon Web Services - 服务 - Elastic Beanstalk - 创建新应用程序
3.2继续创建新应用程序,单击“下一步”,除非被迫填写内容;选择tomcat作为网络服务器;当我们找到一个密钥标签的表单时 - 选择一个现有的密钥,其中包含您之前分配给它的名称。
选择一个名称 - 下一步 - 创建Web服务器 - 选择平台Tomcat - 下一步 - 上传.war文件 - 下一步 - 如果您不需要数据库,请单击下一步 - 设置EC2 key_name的密钥对 - 下一步 - 不要对环境标记做任何事情 - 下一步 - 下一步 - 启动
3.3您的应用程序已着陆;您可以在Elastic Beanstalk仪表板上看到它,您可以在服务 - EC2 - 实例中看到运行环境:
创建IP地址:
4.0转到服务 - EC2 - 实例。检查IPv4 Public IP列。如果那里已有地址,请转到第5点。如果它已空,请转到4.1。
4.1转到服务 - EC2 - 弹性IP :
4.2点击分配新地址:
4.3选择并点击操作 - 关联地址 - 选择您应用的实例 - 关联:
设置路线53 :
5.1转到服务 - 路线53 :
5.2转到托管区域:
5.3点击创建托管区域:
5.4将您网站的名称添加到右侧的表单中(例如,butterflies.com,somesite.edu,无论如何):
出现了一个包含两个托管区域记录集的表格: NS 和 SOA 记录集。
5.5单击NS记录集并将值中的粘贴名称服务器复制到您的注册设置中:
5.6转到服务 - Elastic Beanstalk ,找到您的应用程序 - 复制URL值:
返回Route 53,点击创建记录集。选择键入:A,别名:是,在别名目标中粘贴网址。点击创建:
5.7单击创建记录集。设置名称:www。设置类型:CNAME。将值设置为your_site_name.your_domain(例如,butterflies.com),单击创建:
答案 1 :(得分:1)
因此,您只需要1个公共路由53区域进行codingrecords.tk,然后您可以通过为Elastic Beanstalk为您提供的ELB创建ALIAS记录,为子域www创建Route 53资源记录集。
由于您确实为www.codingrecords.tk创建了一个路由53区域,我会删除该区域(www.codingrecords.tk),使用下面的名称服务器创建一个Delegation Name set,当您使用该名称时为codingrecords.tk创建Route 53区域。这样您就不需要在Registar更改NS记录。
dig @8.8.8.8 www.codingrecords.tk NS
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 www.codingrecords.tk NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38463
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.codingrecords.tk. IN NS
;; ANSWER SECTION:
www.codingrecords.tk. 21599 IN NS ns-1363.awsdns-42.org.
www.codingrecords.tk. 21599 IN NS ns-2005.awsdns-58.co.uk.
www.codingrecords.tk. 21599 IN NS ns-62.awsdns-07.com.
www.codingrecords.tk. 21599 IN NS ns-657.awsdns-18.net.
;; Query time: 134 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Feb 18 18:05:38 2018
;; MSG SIZE rcvd: 177
没有用于codingrecords.tk的名称服务器
dig @8.8.8.8 NS codingrecords.tk
; <<>> DiG 9.8.3-P1 <<>> @8.8.8.8 NS codingrecords.tk
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55760
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;codingrecords.tk. IN NS
;; Query time: 156 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Feb 18 18:15:39 2018
;; MSG SIZE rcvd: 34
答案 2 :(得分:1)
只需将最后一条记录中的名称更改为www.codingrecords.tk即可。应该让它发挥作用。如果它没有 - 那么请阅读下面的内容,看看还有什么不对。
由于这是弹性beanstalk,您应该为其配置ELB。您需要做的就是为www.codingrecords.tk添加A记录,将其配置为ELB的别名。
如果您希望http://codingrecords.tk也能正常工作,您还需要为它添加A记录(也可以为您的ELB添加别名)。但也见P.S.下面。不知道为什么它甚至对你有用 - 它在你上面的配置中没有出现,当我从我的机器上尝试时它并没有解决。很可能你在/ etc / hosts或你的本地DNS中有它,或其他类似的东西。
我相信CNAME记录也应该有用。但我从未尝试过。对我来说,在Route 53中,类型似乎是一个稍微好一点的选择,因为您仍然可以将其配置为别名(从而剥夺CNAME的所有好处),但AWS仍将为查询返回实际IP地址,从而节省最终用户名称解析的往返。
P.S。我也相信你的NS和SOA记录是针对codingrecords.tk的,而不是www.codingrecords.tk。虽然在您当前的配置中完全有效,但他们基本上说您拥有www.codingrecords.tk(以及它的子域),但不是codingrecords.tk。我不认为这是你的意图。