繁体   English   中英

向 AWS ec2 实例注册 GoDaddy 域

[英]Register GoDaddy Domain with AWS ec2 instance

我的问题如下。

  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

欢乐

您实际上必须做几件事才能使您的工作正常进行。

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

由于您在 GoDaddy 注册了您的主机名,并且您想使用 Route53 作为您的 DNS,您必须做几件事。

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

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

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

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

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

为 TLD 添加 A 记录后的 Route53 区域

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

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

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

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

使用nginx进行反向代理

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

以下是为反向代理操作配置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

现在尝试在没有端口的情况下访问您的站点 - 您应该可以访问您的应用程序。

使用弹性负载均衡器

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

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

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

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

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

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

如果您想将您的服务绑定到端口 80,我将遵循像SuperUser那样的其他答案。

补充说明

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

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

您可以使用任何 AWS 公共网关提供商(例如 EC2、ELB、S3)将您的网站或服务器提供给您在 GoDaddy 上拥有的公共域。 AWS 通常每月收取约 0.51 美元来维护此区域条目。

以下步骤设置您的域。

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

检查本教程

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM