首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使Rails服务器端口3000可通过域名访问(亚马逊EC2、Cloudflare)

问使Rails服务器端口3000可通过域名访问(亚马逊EC2、Cloudflare)
EN

Stack Overflow用户
提问于 2020-06-15 06:43:50
回答 2查看 285关注 0票数 0

我有一个开发环境,我想通过一个特定的域名访问。"example.com“。这是一个合法的开发环境(整个puma +SQLite3 RoR启动工具包),我希望它能够使用域名进行访问。

目前,亚马逊EC2的弹性IP可以通过添加:3000来访问。IPAddress:3000通过web浏览器工作(ec2-NUMBERSHERE.ap-southeast-1.compute.amazonaws.com:3000 )。我从运行AWS开始是的,我在screen bundle exec rails server -b 0.0.0.0 EC2中运行我的开发环境。这是故意这样做的。

在我的Cloudflare账户中,我已经将类型A映射为名称example.com,并将内容映射为弹性公网ip。我已经将类型CNAME映射到名称"wwww“,并将内容映射到公共DNS。

如何通过example.com实现与IPAddress:3000相同的功能?

**我知道这忽略了最佳实践,但问题确实是这样的。

EN

回答 2

Stack Overflow用户

发布于 2020-06-15 07:12:29

我认为你不能在DNS级别上做任何事情。您可以使用-p选项更改rails服务器的默认端口:

代码语言:javascript
复制
$ screen bundle exec rails server -b 0.0.0.0 -p 80

但是,您需要以根权限运行rails server,才能使用80端口(以及1024以下的任何其他端口)。

一个更好的选择是将rails server绑定到本地主机(这是默认行为),并使用proxy_pass功能将Nginx添加为在端口80中侦听的反向代理,如下所示:

代码语言:javascript
复制
server {
  listen 80;
  listen [::]:80;

  server_name example.com;

  location / {
      proxy_pass http://localhost:3000/;
  }
}
票数 1
EN

Stack Overflow用户

发布于 2020-06-15 07:37:23

我可以使用iptables将端口80的流量转发到3000。

sudo iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to--ports 3000\

在那之后,运行screen bundle exec rails server -b 0.0.0.0起作用了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62379044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档