使用AWS ec2实例注册GoDaddy域

时间:2016-12-28 17:33:03

标签: node.js amazon-web-services amazon-ec2 dns integration

我的问题如下。

  1. 我在GoDaddy注册了一个域名[假设:mytest.com]
  2. 我在AWS
  3. 上有一个EC2 ALM实例
  4. 我的弹性IP与我的实例相关[假设:111.222.333.444]
  5. 我开发了一个nodejs应用程序并在实例中部署
  6. 该节点应用程序正在端口8181上运行
  7. 可以使用http://111.222.333.444:8181/
  8. 访问应用程序
  9. 我想配置我的域名,以便http://mytest.com指向http://111.222.333.444:8181/

  10. 我也很少使用Route53进行配置,但无法解决端口8181的映射问题。

  11. 需要帮助解决此问题

    提前致谢

    注意:暂时我没有为节点js部署寻找AWS PaaS Elastic Beanstalk

    Ajoy

3 个答案:

答案 0 :(得分:8)

你实际上必须做几件事来让你的事情发挥作用。

1。更改DNS名称服务器以指向Route53托管区域

由于您使用GoDaddy注册了主机名,并且想要将Route53用作DNS,因此您必须做几件事。

首先,转到Route53并为您的域创建托管区域。出于演示目的,我将使用stackoverflowexample.com作为我的域名。

在您创建托管区域后,点击它,您将看到NSSOA条记录。 NS记录列出了您需要使用GoDaddy配置的4个唯一名称服务器。

下图是NS记录集的示例(AWS Route53将其称为委托集)。 Hosted zone nameserver example

然后,您必须前往您的注册商并关注他们的directions to change nameservers for your domain,使用4个名称服务器Route 53将您指定为自定义名称服务器。

然后在路由53中创建一个新的A记录,指向您的弹性IP地址。最后,您的Route 53区域将如下所示,并将A记录映射到您的弹性IP地址。

Route53 zone after adding A record for TLD

2。在默认HTTP端口

上托管/代理您的应用程序

设置DNS记录(等待DNS传播一段时间后),然后您应该可以通过端口8181命中服务器。

但是你想在没有端口号的情况下点击它,那你怎么做?

DNS本身并不关心端口,它实际上只提供有关IP地址和域名的信息。您现在需要的是设置代理或其他机制来引导服务器上的流量。我将提供一些解决方案。

使用nginx反向代理

由于您控制自己的实例,您可以在实例上安装nginx(Web /代理服务器)并对其进行配置,以便在获得请求时,它知道如何引导流量。

Here are generic instructions用于配置nginx进行反向代理操作。

Debian / Ubuntu的

nginx示例

如果您使用的是Debian或Ubuntu,一个简单的设置如下:

# Install nginx
sudo apt-get update && sudo apt-get install nginx

# By default, nginx runs a default site on port 80 you don't care about
# This removes the symlink for the default nginx site
sudo rm /etc/nginx/sites-enabled/default

然后,您需要在sites-available中创建自己的配置。

sudo vim /etc/nginx/sites-available/mainsite

您的文件内容可能如下所示:

server {
    listen 80;
    server_name stackoverflowexample.com;

    location / {
        proxy_set_header  X-Forwarded-For $remote_addr;
        proxy_set_header  Host $http_host;

        # Proxy all requests to the NodeJS app on port 8181
        proxy_pass        http://localhost:8181;
    }
}

完成后,执行接下来的两个步骤

# symlink your new nginx config to sites-enabled, which nginx
# automatically discovers and loads.
sudo ln -s /etc/nginx/sites-available/mainsite /etc/nginx/sites-enabled/mainsite

# Reload nginx configuration
sudo service nginx reload

现在尝试在没有端口的情况下访问您的网站 - 您应该到达您的应用程序。

使用Elastic Load Balancer

AWS提供负载均衡器服务(每月每个负载均衡器额外成本约20美元),允许您为应用程序配置HTTP和/或HTTPS负载均衡器,允许您将传入请求端口映射到端口上你的实例。

如果您使用Elastic Beanstalk,它也会自动提供给您。

他们有自己的tutorial which should help

将您的应用程序配置为在端口80上运行

我自己不这样做,这只有在您的实例只会托管一个控制其所有路由的应用时才有用。

您可以直接在端口80上运行您的Node应用,而无需在前面使用反向代理。如果你沿着这条路走下去,我建议不要让服务以root运行,而是配置像authbind这样的东西,允许对端口80进行非特权访问。

如果您想将服务绑定到端口80,我会推迟其他答案,例如this SuperUser one

附加说明

  • 您注意到我排除了配置HTTPS。这需要更多步骤,例如配置SSL证书,尽管AWS或LetsEncrypt现在免费提供它们。如果您在实例上使用Elastic Loadbalancer或服务器,或者直接暴露您的应用,配置也会有所不同。

  • 我建议nginx,我几乎在所有一般情况下都会推荐它,但是有多个不同的服务器可以用作反向代理。其他受欢迎的是haproxy或带有mod_proxy的apache httpd。

答案 1 :(得分:1)

您可以使用任何AWS公共网关提供商(例如EC2,ELB,S3)将您的网站或服务器提供给GoDaddy上的公共域。 AWS通常也要维护该区域条目,每月收取约0.51 USD。

the following steps set up your domain.

  1. 获取网站或服务的弹性IP或EC2 IP。
  2. 在Route53上创建托管区域。
  3. 更新托管区域上的域名记录。
  4. 在GoDaddy上更新名称服务器以进行发现。

Check this tutorial

答案 2 :(得分:0)

对于那些只想将他们的域路由到 ec2 实例的人(已经运行 ec2 实例并拥有域名)。

1.) 转到:https://dcc.godaddy.com/domains 并选择您的域。

2.) 点击管理 DNS 并编辑记录类型 A。

3.) 在 Points to 文本框中输入您的 ec2 实例公共 IP。节省。完成。