[英]Register GoDaddy Domain with AWS ec2 instance
我的问题如下。
我想配置我的域,以便http://mytest.com指向http://111.222.333.444:8181/
我对使用 Route53 进行配置的知识也很少,但无法解决端口 8181 的映射问题。
需要帮助来解决这个问题
提前致谢
注意:目前我不是在寻找用于节点 js 部署的 AWS PaaS Elastic Beanstalk
欢乐
您实际上必须做几件事才能使您的工作正常进行。
由于您在 GoDaddy 注册了您的主机名,并且您想使用 Route53 作为您的 DNS,您必须做几件事。
首先,转到 Route53 并为您的域创建一个托管区域。 出于演示目的,我将使用stackoverflowexample.com
作为我的域。
创建托管区域后,单击进入它,您应该会看到NS
和SOA
记录。 NS
记录列出了您需要使用 GoDaddy 配置的 4 个唯一名称服务器。
下图是 NS 记录集的示例(AWS Route53 将其称为委托集)。
然后,您必须前往您的注册商并按照他们的指示更改您的域的名称服务器,使用 Route 53 分配给您的 4 个名称服务器作为您的自定义名称服务器。
然后在路由 53 中创建一个新的A
记录,指向您的弹性 IP 地址。 最后,您的 Route 53 区域将如下所示,其中A
记录将您的域映射到您的弹性 IP 地址。
在您设置 DNS 记录(并等待 DNS 传播)后,您应该能够在端口 8181 上访问您的服务器。
但是你想在没有端口号的情况下点击它,那么你怎么做呢?
DNS 本身并不关心端口,它实际上只是提供有关 IP 地址和域名的信息。 您现在需要的是设置代理或其他机制来引导服务器上的流量。 我将提供一些解决方案。
nginx
进行反向代理由于您控制自己的实例,因此您可以在该实例上安装nginx
(一个 Web/代理服务器)并对其进行配置,以便在收到请求时,它知道如何引导流量。
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 上运行您的 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 美元来维护此区域条目。
对于那些只想将他们的域路由到 ec2 实例的人(已经运行 ec2 实例并拥有域名)。
1.) 前往: https : //dcc.godaddy.com/domains并选择您的域。
2.) 单击管理 DNS 并编辑记录类型 A。
3.) 在Points to
文本框中输入您的 ec2 实例公共 ip。 节省。 完毕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.