使用AWS ec2实例注册GoDaddy域

ajo*_*nha 4 dns integration amazon-ec2 amazon-web-services node.js

我的问题如下.

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

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

需要帮助解决此问题

提前致谢

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

Ajoy

wkl*_*wkl 9

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

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

由于您使用GoDaddy注册了主机名,并且您希望将Route53用作DNS,因此您必须执行多项操作.

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

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

下图是NS记录集的示例(AWS Route53将其称为委托集). 托管区域名称服务器示例

然后,您必须前往您的注册商并按照他们的指示更改您域名的名称服务器,使用4个名称服务器Route 53将您指定为自定义名称服务器.

然后A在路由53中创建一个指向弹性IP地址的新记录.最后,您的Route 53区域将看起来像这样,并将A您的域映射到您的弹性IP地址.

添加TLD记录后的Route53区域

2.在默认HTTP端口上托管/代理您的应用程序

在设置DNS记录(并等待DNS传播一段时间)之后,您应该能够在端口8181上访问您的服务器.

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

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

使用nginx反向代理

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

以下是配置nginx反向代理操作的一般说明.

nginx Debian/Ubuntu的例子

如果您使用的是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
Run Code Online (Sandbox Code Playgroud)

然后,您将需要创建自己的配置sites-available.

sudo vim /etc/nginx/sites-available/mainsite
Run Code Online (Sandbox Code Playgroud)

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

# 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
Run Code Online (Sandbox Code Playgroud)

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

使用Elastic Load Balancer

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

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

他们有自己的教程应该有所帮助.

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

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

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

如果您想将服务绑定到端口80,我会推迟使用其他类似SuperUser的答案.

补充说明

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

  • 我建议nginx,我仍然会在几乎所有的一般情况下推荐它,但是有多个不同的服务器可以用来作为反向代理.其他流行的是haproxy或apache httpd mod_proxy.