亚马逊网络服务 AWS:如何托管​​ java 应用程序、分配自定义域、自定义域名无法正常工作

Amazon web services AWS: how to host java app, assign custom domain, custom domain name doesn't work properly

我在这里托管了一个站点:http://testapp-test.us-west-2.elasticbeanstalk.com/someservlet.do

该站点包含一个 index.jsp 和一个 someservlet

https://my.freenom.com cabinet I tried: to set nameservers and to set url forwarding to http://testapp-test.us-west-2.elasticbeanstalk.com。 前者不起作用:我将名称服务器设置为屏幕显示,当尝试访问 codingrecords.tk 时它只是空白。 URL 转发但是有效,它确实显示主页,但是当我尝试访问 http://codingrecords.tk/someservlet.do 它仍然显示 index.jsp 消息。

我该如何解决?通过指定名称服务器,而不是 url 转发?但是后来也没用..

所以你只需要1个Public Route 53 zone for codingrecords.tk,那么你可以通过为给定的ELB创建ALIAS记录来为子域www创建一个Route 53资源记录集你通过 Elastic Beanstalk。

既然你确实为 www.codingrecords.tk 创建了一个 route 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

只需将最后一条记录中的 Name 更改为 www.codingrecords.tk。应该让它工作。如果没有 - 请阅读下文,看看还有什么问题。

因为这是elastic beanstalk,你应该为它配置一个ELB。您需要做的就是为 www.codingrecords.tk 添加一条 A 记录,配置为您的 ELB 的别名。

如果您希望 http://codingrecords.tk 也能正常工作,您还需要为其添加一条 A 记录(也为您的 ELB 设置别名)。还要看P.S。以下。不确定它为什么对你有用——它不存在于你上面的配置中,当我从我的机器上尝试时它没有解决。很可能您的 /etc/hosts 或本地 DNS 或其他类似的东西中都有它。

我相信 CNAME 记录也应该有效。但我从未尝试过。对我来说,A 类型似乎是 Route 53 中更好的选择,因为您仍然可以将其配置为别名(从而剥夺 CNAME 的所有好处),但 AWS 仍将 return 一个实际的 IP 地址用于查询,在名称解析中为最终用户节省 round-trip。

P.S。我还相信您的 NS 和 SOA 记录是针对 codingrecords.tk,而不是针对 www.codingrecords.tk。虽然在您当前的配置中完全有效,但他们实际上是在说您拥有 www.codingrecords.tk(并且是 sub-domains),而不是 codingrecords.tk。我不认为这是你的意图。

好的,经过大量谷歌搜索和尝试后,我设法让它工作了。希望对以后的读者有所帮助。

我在 Internet 的自定义域中部署 java 应用程序所做的工作:

  1. 在freenom.com
  2. 中获取免费域名
  3. 创建密钥对(不知道有没有必要,以防万一):
    2.1.转到 Amazon Web 服务 - 服务 - EC2 - 密钥对 - 创建密钥对

    2.2 选一个key_name作为key,在电脑上保存一个文件

  4. 在 AWS 上创建应用程序和环境

    3.1 转到Amazon Web Services - 服务 - Elastic Beanstalk - 创建新应用程序

    3.2继续创建新的申请,除非强制填写一些东西,否则点击下一步;选择 tomcat 作为网络服务器;当来到一个有 Key 标签的表单时 - 选择一个现有的键,其中包含您之前分配给它的名称。

选择一个名称 - 下一步 - 创建 Web 服务器 - Select 平台 Tomcat - 下一步 - 上传你的 .war 文件 - 下一步- 如果您不需要数据库,请单击下一步 - 将 EC2 密钥对设置为 key_name - 下一步 - 不要对环境标签做任何事情 - 下一步 - 下一步 - 启动

3.3 您的申请已启动;您可以在 Elastic Beanstalk 仪表板看到它,您可以在 Services - EC2 - Instances:

看到 运行 环境

  1. 创建IP地址:

    4.0 转到 服务 - EC2 - 实例 。检查 IPv4 Public IP 列。如果那里已经有一个地址,请转到第 5 点。如果它是空的,请转到 4.1。

    4.1 转到 服务 - EC2 - 弹性 IP

    4.2 点击分配新地址:

    4.3 选择它并单击 Actions - Associate Address - Select 你的应用实例 - Associate:

  2. 设置53号公路:

    5.1 转到 服务 - Route 53

    5.2 转到托管区域

    5.3 单击创建托管区域

    5.4 将您的网站名称添加到右侧的表格中(例如,butterflies.com、somesite.edu,随便什么):

出现一个 table,其中包含您的托管区域的两个记录集:NSSOA 记录集。

5.5 单击 NS 记录集并将名称服务器从 Value 复制粘贴到您的注册商设置中:

5.6 转到 服务 - Elastic Beanstalk,找到你的应用程序 - 复制 URL 值:

返回 Route 53,点击创建记录集。选择 Type: A, Alias: 是的,在 Alias 目标中粘贴 URL .单击创建:

5.7 单击创建记录集。设置名称:www.设置类型:CNAME。将值设置为your_site_name.your_domain(例如butterflies.com),单击创建

  1. 完成!很有可能,your_site_name 正在工作。