Ruby on rails 使Rails服务器端口3000可通过域名访问(AWS EC2、Cloudflare)

Ruby on rails 使Rails服务器端口3000可通过域名访问(AWS EC2、Cloudflare),ruby-on-rails,amazon-ec2,cloudflare,Ruby On Rails,Amazon Ec2,Cloudflare,我有一个开发环境,我想通过一个特定的域名访问,即“example.com”。这是一个合法的开发环境(整个puma+sqlite 3 RoR启动工具包),我希望能够使用域名访问它 目前,AWS EC2的弹性IP可通过附加:3000访问。IPAddress:3000工作(ec2 NUMBERSHERE.ap-southest-1.compute.amazonaws.com:3000通过web浏览器)。我首先运行screenbundle exec rails server-b0.0.0Yes,我正在A

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

目前,AWS EC2的弹性IP可通过附加:3000访问。IPAddress:3000工作(ec2 NUMBERSHERE.ap-southest-1.compute.amazonaws.com:3000通过web浏览器)。我首先运行
screenbundle exec rails server-b0.0.0
Yes,我正在AWS EC2中运行我的开发环境。这是有意的

在我的Cloudflare帐户中,我已将类型A映射到名称“example.com”,并将内容映射到弹性公共ip。我已将类型CNAME映射到名称“WW”,并将内容映射到公共DNS

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


**我知道这忽略了一些最佳实践,但问题其实就在于此。

我认为您无法在DNS级别执行任何操作。您可以使用
-p
选项更改rails服务器默认端口:

$screen bundle exec rails服务器-b0.0.0.0-p80
但是,为了使用
80
端口(以及1024以下的任何其他端口),您需要使用root权限运行
rails服务器

更好的选择是在本地主机上绑定
rails服务器
(这是默认行为),并使用
proxy\u pass
功能将Nginx添加为端口
80
中侦听的反向代理,如下所示:

server {
  listen 80;
  listen [::]:80;

  server_name example.com;

  location / {
      proxy_pass http://localhost:3000/;
  }
}

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

sudo iptables-t nat-I预路由-p tcp-dport 443-j重定向-到端口3000\


之后运行
屏幕包execrails服务器-b0.0.0
工作了

我有根权限。我如何使用sudo执行此操作?我在UbuntuI上,获取权限被拒绝-绑定“0.0.0.0”端口80(Errno::EACCES)的(2)