我的问题如下。
我想配置我的域名,以便http://mytest.com指向http://111.222.333.444:8181/
我也很少使用Route53进行配置,但无法解决端口8181的映射问题。
需要帮助解决此问题
提前致谢
注意:暂时我没有为节点js部署寻找AWS PaaS Elastic Beanstalk
Ajoy
答案 0 :(得分:8)
你实际上必须做几件事来让你的事情发挥作用。
由于您使用GoDaddy注册了主机名,并且想要将Route53用作DNS,因此您必须做几件事。
首先,转到Route53并为您的域创建托管区域。出于演示目的,我将使用stackoverflowexample.com
作为我的域名。
在您创建托管区域后,点击它,您将看到NS
和SOA
条记录。 NS
记录列出了您需要使用GoDaddy配置的4个唯一名称服务器。
下图是NS记录集的示例(AWS Route53将其称为委托集)。
然后,您必须前往您的注册商并关注他们的directions to change nameservers for your domain,使用4个名称服务器Route 53将您指定为自定义名称服务器。
然后在路由53中创建一个新的A
记录,指向您的弹性IP地址。最后,您的Route 53区域将如下所示,并将A
记录映射到您的弹性IP地址。
设置DNS记录(等待DNS传播一段时间后),然后您应该可以通过端口8181命中服务器。
但是你想在没有端口号的情况下点击它,那你怎么做?
DNS本身并不关心端口,它实际上只提供有关IP地址和域名的信息。您现在需要的是设置代理或其他机制来引导服务器上的流量。我将提供一些解决方案。
nginx
反向代理由于您控制自己的实例,您可以在实例上安装nginx
(Web /代理服务器)并对其进行配置,以便在获得请求时,它知道如何引导流量。
Here are generic instructions用于配置nginx
进行反向代理操作。
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,它也会自动提供给您。
他们有自己的tutorial which should help。
我自己不这样做,这只有在您的实例只会托管一个控制其所有路由的应用时才有用。
您可以直接在端口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.
答案 2 :(得分:0)
对于那些只想将他们的域路由到 ec2 实例的人(已经运行 ec2 实例并拥有域名)。
1.) 转到:https://dcc.godaddy.com/domains 并选择您的域。
2.) 点击管理 DNS 并编辑记录类型 A。
3.) 在 Points to
文本框中输入您的 ec2 实例公共 IP。节省。完成。